当前位置: 首页 > article >正文

一百二十八、Kettle——从Hive增量导入到ClickHouse

 一、目标

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

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

全量导入请访问拙作链接

http://t.csdn.cn/Rqvuvicon-default.png?t=N658http://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的增量导入就成功了!

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


http://www.kler.cn/a/37830.html

相关文章:

  • VR智慧城市:实现城市智能化发展,激发经济更大活力
  • Qt+C++多线程thread-QThread-QTimer视频-控件动画-混合应用实例
  • 在线培训系统的保障措施带来安全、可靠的学习环境
  • Java 常用的重构技巧指南 v1.0
  • 如何提升民宿营业额?民宿管理系统有什么用?
  • c++模板编程-非类型模板参数
  • Elasticsearch 搜索推荐
  • 【SQL应知应会】表分区(一)• MySQL版
  • 论文笔记--TinyBERT: Distilling BERT for Natural Language Understanding
  • 【设计模式】工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  • RabbitMQ【笔记整理+代码案例】
  • 【数据挖掘】时间序列教程【二】
  • 【hadoop】在linux上设置Hadoop的环境变量
  • superheat | 超级简单的热图绘制解决方案!~(二)(聚类和注释图的添加~)
  • Spark(24):Spark内核概述
  • Qt/C++音视频开发46-音视频同步保存到MP4
  • Windows 操作系统架构介绍
  • ChatGPT 的局限性是什么?
  • c++对时间的操作(chrono库)——字符创转时间,时间加减
  • 038、TiDB特性_聚簇索引和非聚簇索引