一、目标
用kettle把hive数据同步到clickhouse,简单运行、直接全量导入数据
工具版本:kettle:8.2 Hive:3.1.2 ClickHouse21.9.5.16
二、前提
(一)kettle连上hive
(二)kettle连上clickhouse
三、实施步骤
(一)打开kettle,新建转换任务。拖拽表输入、字段选择、表输出控件
1.表输入控件:在输入控件模块
2.字段选择控件:在转换控件模块
3.表输出控件:在输出控件模块
(二)配置表输入控件,尤其注意SQL里的字段类型转换
可以修改步骤名称为hive输入,选择hive数据库连接,然后写查询SQL语句
注意:hive里的string类型字段,需要转换为类似varchar(50)的具体大小的varchar字段
经测试:
--int字段、float、timestamp字段都可以直接用 --string字段 cast(device_no as varchar(50))
(三)配置字段选择控件
1.在选择和修改页面,点击获取选择的字段
2.在元数据模块,点击获取改变的字段。修改相应的字段,比如字段名、字段类型、字段格式等等
(四)配置表输出控件
1.在主选项页面
(1)可以修改步骤名称为clickhouse输出
(2)选择连接对应的clickhouse数据库、目标模式就是数据库名、目标表为表名
(3)勾选指定数据库字段
(4)勾选使用批量插入
2.在数据库字段页面
点击获取字段,检查相同字段名是否映射
(五)Ctrl+S保存,给kettle任务命名,然后点击运行。
运行成功!
(六)在clickhouse表里检查数据,验证一下
这样,用kettle从hive导入click house就成功了。
注意点有两个,一是kettle的版本问题,二是从hive导入click house一定要注意字段的类型转换。
乐于奉献共享,帮我你我他!!!