正文开始
测试平台:
win10+64位平台
kettle(5.2.0版本)
mongo(MongoDB server version: 3.4.1)
问题描述:
经过测试发现,如果 MongoDB 需要验证的话,
kettle6.0以及以下版本是无法使用 “MongoDB input” 组件连接 MongoDB 的。
目前的常用解决方法是把mongo的数据导出成json文件或者csv文件,然后再解析出来。
解决办法:
mongod 3.0 以上版本默认使用SCRAM-SHA-1认证,低版本则默认使用mongo-CR认证。
而6.0以下版本的kettle中的mongo-java-driver.jar默认不使用SCRAM-SHA-1认证的认证方式。
所以只需要将mongo-java-driver.jar中的相关类替换为默认使用SCRAM-SHA-1认证即可。
也就是修改mongo-java-driver.jar的class文件,然后将新的jar包复制到kettle对应目录下即可。
操作步骤:
01.下载附件中经过我修改的:mongo-java-driver-2.14.3-sources.jar(即下文中的《经过改造的mongo-java-driver-2.14.3.jar.zip》)
02.将mongo-java-driver-2.14.3-sources.jar放到:data-integration\plugins\pentaho-mongodb-plugin\lib目录中:
如下图所示:
03.启动kettle
04.配置mongoinput组件(填写用户名密码以及DBname)
05.成功的标志即为点击get collection之后能看到collections列表:
06.贴出点击get fields和预览之后的数据:
经过修改后的jar包资源地址:
查看文末附件《经过改造的mongo-java-driver-2.14.3.jar.zip》
jar包修改过程:
查看文末附件《jar包改造过程.v1.0.20180517.zip》
以上问题已经在kettle7.X和kettle8.X中解决
在kettle7.X,8.X版本中已经可以选择Authentication database、Authenticate Mechanism了。
如下图所示:
有问题QQ联系623535597或者
添加微信: