背景,之前需要把oracle的数据拉取导kudu,组内大神增加了flume组件。
jdbcsource,之前配置文件时xxx.conf,改造后flume不读配置文件,将配置文件放到mysql
中间接入了zk,将读取的offset记录到zk。
kudusink,改造后的kudusink 就是建立一个kuduclient,从channal里获取数据,然后通过kuduClient写道kudu里。
后面不知道怎么的 大神觉得flume不太好用。。。。用了一个大杀器 streamingset
文档https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Getting_Started/GettingStarted_Title.html#concept_htw_ghg_jq
源码https://github.com/streamsets/datacollector
不多说直接上案例。
1、读取oracle指定表的数据写到kudu,并且会实时监控后续增加的数据,类似flume
选取jdbc Query Consumer
配置oracle或者mysql等jdbc源
备注这个sql query必须要有一个offset列,也就是说指定一列,一般为主键id列或者etl_date列。
例如 select rowidtochar(rowid) "ROWID" ,ID ,NAME。。。。。。。。。
from dwdmdata.dm_kpi_dim_account where etl_last_update_date > to_date('${OFFSET}','yyyy-mm-dd hh24:mi:ss') order by etl_last_update_date
备注 这里我有ROWID是因为kudu表根据oracle表建表的时候必须指定主键,有的oracle表没有主键id,所以采用ROWID
oracle配置其他参数如上图
选取kudu组件
配置kudu参数,下面的Field to Column Mapping ,我理解的是上面oracle 的Root Field Type = List-Map
一个map里放的就是 Oracle字段-kudu的字段。
连接好就可以启动了。