2016-03-15 2 views
0

Я пытаюсь хранить данные Свиньи в базу данных MongoDB с набора реплик двух узлов:Подключение от свинки к MongoDB Replica Set URI

STORE out INTO 'mongodb://user:[email protected]:27017,mongoserver2.com:27017/my_db.my_collection?replicaSet=set-1234 
USING com.mongodb.hadoop.pig.MongoUpdateStorage('{"_id":"\$id"}', '{\$set:{"_id":"\$uid","data":"\$data"}}','id:chararray,data:chararray','','{upsert:true}'); 

Но я получаю следующее исключение:

pig script failed to validate: java.lang.IllegalArgumentException: 
java.net.URISyntaxException: Relative path in absolute URI: mongoserver2.com:27017/my_db.my_collection%3FreplicaSet=set-1234 

Возможно, что проблема связана с правильной обработкой проблемы в формате MongoClientURI.

Есть ли способ подключения к Pig к набору реплик MongoDB с несколькими хостами?

ответ

1

Пока вы указываете имя набора реплик в MongoURI, Java-драйвер MongoDB автоматически обнаружит переход на резервный набор и обнаружит первичный. Даже если адрес (основной) машины не указан в строке подключения URI.

Вы можете проверить это, указав вторичные для например:

STORE out INTO  
    'mongodb://user:[email protected]:27017/my_db.my_collection?replicaSet=replicaSetName' 
USING com.mongodb.hadoop.pig.MongoInsertStorage('', ''); 

Поведение выше протестирован на: mongo-java-driver-3.2.2.jar, mongo-hadoop-pig-1.5.0.jar и mongo-hadoop-core-1.5.0.jar.

Обратите внимание, что в вашем примере вы ошибались replicaSet в URI, хотя это может быть опечатка при написании вопроса здесь.

+0

Опечатка в replicaSet действительно была при написании вопроса. – Yonatan

Смежные вопросы