一百二十八、Kettle——从Hive增量导入到ClickHouse(根据create_time字段判断)

42 篇文章 23 订阅
12 篇文章 0 订阅

 一、目标

用Kettle把Hive的DWS层数据增量导入到ClickHouse中

工具版本:Kettle:8.2     Hive:3.1.2     ClickHouse21.9.5.16

全量导入请访问拙作链接

http://t.csdn.cn/Rqvuvicon-default.png?t=N7T8http://t.csdn.cn/Rqvuv

二、前提准备

(一)kettle已连上Hive

(二)kettle已连上ClickHouse 

三、实施步骤

(一)打开kettle,新建转换任务。拖拽2个表输入、替换NULL值、字段选择、表输出控件

1.表输入控件:在输入控件模块

2.替换NULL值控件:在应用模块

3.字段选择控件:在转换控件模块

4.表输出控件:在输出控件模块

(二)配置第一个表输入控件 

1、目标

通过SQL语句获取clickhouse表的最新时间

2.实施步骤

第一步,双击表输入控件,打开操作界面
第二步,选择目标表所在的数据库
第三步,输入SQL语句获得目标表数据的最新时间

select(
select
create_time
from  hurys_dc_ads.ads_area_traffic_status_1hour
order by create_time desc limit 1) as  create_time

第四步,预览数据

(三)配置替换NULL值控件

1、目标

防止由于目标表没有数据而导致异常,因此给第一个表输入控件的时间字段赋值

2.实施步骤

 第一步,双击替换NULL值控件,打开操作界面
第二步,点击获取字段
第三步,将字段值替换为1000-01-01 00:00:01  并且设置转换掩码yyyy-MM-dd HH:mm:ss

(四)配置第二个表输入控件 

1、目标

通过SQL语句查询Hive中的增量数据

2.实施步骤

 第一步,双击表输入控件,打开操作界面
第二步,选择数据源表所在的数据库
第三步,输入SQL语句以查询Hive中的增量数据
第一个坑:注意string字段类型的类型转换

经测试:

--int字段、float、timestamp字段都可以直接用
--string字段   cast(device_no as varchar(50))

select
       cast(device_no as varchar(50)),
       create_time,
       start_time,
       cast(name as varchar(50)),
       lane_no,
       lane_length,
       target_count,
       occupancy,
       speed_avg,
       cast(day as varchar(50))
from hurys_dc_dws.dws_area_traffic_status_1hour
where  create_time >  ?

第四步,勾选替换SQL语句里的变量
第五步,从步骤插入数据里选择替换NULL值
第六步,设置记录数量限制

(五)配置字段选择控件

1.在选择和修改页面,点击获取选择的字段

2.在元数据模块,点击获取改变的字段。修改相应的字段,比如字段名、字段类型、字段格式等等 

 第二个坑:这里的day字段千万不要选择Date字段类型

(六)配置表输出控件

1.在主选项页面

(1)可以修改步骤名称为clickhouse输出

(2)选择连接对应的clickhouse数据库、目标模式就是数据库名、目标表为表名

(3)勾选指定数据库字段

(4)勾选使用批量插入

 2.在数据库字段页面

点击获取字段,检查相同字段名是否映射

 (七)Ctrl+S保存,给kettle任务命名,然后点击运行

 (八)再次点击运行一下kettle任务,验证是否增量导入

 (九)在clickhouse表里检查数据,验证一下

 这样,用kettle从hive到clickhouse的增量导入就成功了!

乐于奉献共享,帮助你我他!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天地风雷水火山泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值