kettle 从hive中读取数据并写入MongoDB

kettle 从hive中读取数据并写入MongoDB有两种方法

1.方法一,流程图 :

这里写图片描述

2. 下面分析每个流程的具体做法:

2.1 查询数据库中的内容,由于后面想要单独的字段date作为索引,所以直接在查询表的时候增加一个字段就可以。在该步骤中要确保数据库能够连上。
这里写图片描述

2.2 json输出(注意箭头指向的两个地方),这个步骤主要将字段组合为json,因为json需要的是将字段info,count_info所有的数据整合为一条json,所以在设置中要把数据条目设为0或者空值,所以该步骤中只需要这两个字段。运行到该步骤显示结果中只有outputValue字段,单独的字段是null,而且在outputValue结果中不见date字段是因为在字段选择中只选了前两个字段。
这里写图片描述
这里写图片描述
这里写图片描述
2.3 因为json输出后date值为空,因此后面还需要将该值设定一个值,我们取一个变量。值替换${ETL_DT}为自定义的变量。
这里写图片描述
2.4 mongodb输出
该步骤要确保能够连上mongdb,同时要注意红色方框的内容,Truncate collection是每次清空该表,
打上勾的地方表示是否需要删除collection和是否需要插入更新功能,打上勾都表示“是”。(本人这不需要每次清空,所以Truncate collection 不需要打上勾)
这里写图片描述

这一步是选择输出的字段,第一个field是kettle流中的字段,第二个field是mongo文档中的字段,需要注意的是第五个字段Match field for upsert,即是否作为更新参照字段,第六个field是标记字段是更新还是插入,或者有则更新无则插入。和关系型数据库的update语句功能一致:update table set col_1 = col_2 where col_3 = col_4 。
本文需要根据date来更新数据所以Match field for upsert 要选Y.
这里写图片描述

在第四个选项卡就是我们索引功能,在此必须得提一下,mongo的collection不需要写脚本创建,所以索引也不需要脚本,可以直接在MongoDB Output中创建。索引中中的1表是升序,-1表示降序。也可以创建复合索引.。本文将date设为索引并降序
这里写图片描述

3. 方法2 流程图 (直接使用mongoDB output 插件路径组合)参考[3]

这里写图片描述

表输入的数据为:
这里写图片描述

在该步骤中要选择下图所示的对勾,Modifer update,要不然操作不成功。
这里写图片描述

在该图总,Match field for update中选Y代表是根据这个字段进行的匹配值。对于插入数组,要先将字段插入array[0] 操作为 setModifierpolicyinsert. push将后面的数字值放进去。
这里写图片描述
Mongodb插入结果为:
这里写图片描述

参考
1. http://blog.csdn.net/u013226462/article/details/50251181
2 .http://www.ukettle.org/forum.php?mod=viewthread&tid=9&extra=page%3D1&page=1&_dsign=d6e325b4
3. http://wiki.pentaho.com/display/EAI/MongoDB+Output(官网)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值