【原创】kettle5.X 6.X 读入 mongodb数据【3.0+版本有用户密码认证情况下】

浏览: 2803

正文开始


测试平台:

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了。

如下图所示:

image.png



有问题QQ联系623535597或者

添加微信:


推荐 0
本文由 大白菜 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册