Pig Mongo 连接串多个host报错

问题描述

原来pig作业中的连接器只指定了一个primary host,为了防止mongo服务器主从切换时能够继续使用,于是想利用replica set的特性,将多个host传给mongo连接器:例如 ‘mongodb://user:passwd@host1:port1,host2:port2/’
但是出现了如下的语法错误

pig script failed to validate: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: .... 

解决方法

java.net.URI可能不支持连接字符串中的逗号。我们通过在连接字符串中只包含一组host:port 并在连接串末尾指定 replicaSet=<replicaSetName> 来避免这个问题, 例如:

'mongodb://user:pass@host1:port1/my_db.my_collection?ssl=true&replicaSet=<replicaSetName>'

Java驱动程序会自动发现副本集中的其他节点,因此只需要指定URI中的一个主节点(即使不是primary节点)即可。

原文地址:https://www.cnblogs.com/lestatzhang/p/10611348.html