二百二十四、Kettle——曲线实现从Hive插入更新到ClickHouse(分区字段是month或year)

一、目的

对于以month、year为分区字段的数据,不是像day字段分区那样每天增量插入更新即可,而是要以部分字段查询、部分字段更新,但是ClickHouse数据库并不适合更新操作,直接使用Kettle的插入更新控件会导致问题,必须曲线实现这个功能

二、Hive的DWS层建表语句和ClickHouse的ADS建表语句

(一) Hive的DWS层建表语句

create  table  if not exists  dws_avg_volume_day_month(scene_name             string      comment '场景名称',device_direction       string      comment '雷达朝向',sum_volume_month       int         comment '每月总流量',count_day              int         comment '每月总天数',avg_volume_day_month   int         comment '月均维度的日平均流量'
)
comment '月均维度的日平均流量表'
partitioned by (month string)
stored as orc
;

(二)ClickHouse的ADS建表语句

create  table  if not exists  hurys_dc_ads.ads_avg_volume_day_month(scene_name             String      comment '场景名称',device_direction       String      comment '雷达朝向',sum_volume_month       int         comment '每月总流量',count_day              int         comment '每月总天数',avg_volume_day_month   int         comment '月均维度的日平均流量',month                  String      comment '月份'
)ENGINE = MergeTree
PARTITION BY (month)
PRIMARY KEY month
order by month
SETTINGS index_granularity = 8192;

对于这类表,每天执行任务时scene_name、device_direction、month等String字段基本并不需要变,只有sum_volume_month、count_day、avg_volume_day_month等Int字段需要每日更新

三、对于插入更新这种需求,一般使用Kettle的增量插入更新

(一)似MySQL关系型数据库

如果似MySQL这种关系型数据库,适合增删改查等事务性操作,那么可以直接用Kettle的插入更新控件

1、Kettle的插入更新任务步骤(样例直接全量插入更新)

(1)关键是插入更新控件配置

2、在MySQL中直接修改表中数据

3、再次运行Kettle任务

4、在MySQL目标表中验证数据

数据量并没增加,只是发生更新

(二)类ClickHouse列式存储数据库

但是,对于ClickHouse这种列式存储数据库,不适合删除、修改等事务性操作,则没法直接使用Kettle的插入更新控件

1、Kettle的插入更新任务步骤

(1)关键是插入更新控件配置

用来查询的关键字是不需要基本不需要变更的字段,一般是主键,如果没有主键则几个字段组合成主键

更新字段是所有字段,不能把更新N,否则相关字段只能插入不能更新

2、用Kettle插入更新控件实现增量插入更新后,如果数据没有更改则运行没有问题

3、但是如果更改部分字段的数据,则会报错

(1)先在Hive中增加一天数据以增加DWS层表中数据

(2)再次运行Kettle任务,则会报错

所以,对于相同的插入更新控件配置,导入MySQL插入更新可以,导入ClickHouse插入更新则失败!

四、对于从Hive到ClickHouse,要实现插入更新的功能,只能先删除ClickHouse表数据再导入数据

(一)删除ClickHouse数据方式

删除ClickHouse数据虽然有几种方法,可以delete,也可以删除分区,也可以truncate,也可以TTL设置保存时间,还可以删除数据文件,但是对这种需要即时删除ClickHouse表中最新的分区数据,无法用delete、TTL等方式实现,而删除分区又太麻烦,刚好这几张表的数据量较少,因此先采用truncate方式,先删除表数据,再全量导入即可

(二)truncate方式实现方法

1、SQL运行

2、在表输出控件中勾选✔剪裁表

这两种方式都试过,都可以!

但是为了避免勾选✔剪裁表后面可能导致问题,还是实现SQL实现稳妥些

五、Kettle任务步骤

(一)执行SQL脚本

(二)hive输入

(三)字段选择

(四)clickhouse输出

(五)保存后运行kettle任务

(六)查看ClickHouse中表数据

六、验证是否实现插入更新功能

(一)删除Hive中1天的数据

(二)运行Kettle任务

(三)查看ClickHouse中表数据

数据量不变,只是2月份的数据发生改变,算是实现了ClickHouse插入更新的功能!

后面如果有更好的方法就再完善,目前能用就行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于python+django+vue.js开发的社区养老管理系统

功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 功能包括:老人管理、护工管理、亲属管理、病史管理、房间管理、活动管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.co…

Java项目,营销抽奖系统设计实现

作者:小傅哥 博客:https://bugstack.cn 项目:https://gaga.plus 沉淀、分享、成长,让自己和他人都能有所收获!😄 大家好,我是技术UP主,小傅哥。 经过这个假期的嘎嘎卷🧨…

软件实际应用实例分享,门诊电子处方模板制作教程,中西医诊所病历开单系统教程

软件实际应用实例分享,门诊电子处方模板制作教程,中西医诊所病历开单系统教程 一、前言 以下软件教程以 佳易王诊所电子处方软件V17.3为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、在开电子处方的时候&#xff0c…

算法-二叉树相关

判断二叉树是否是完全二叉树 思路:层次遍历,如果之前某个节点叶子节点为空,队列后续的所有节点的左右节点都不能非空,并且如果节点左节点为null但是右节点不为null该二叉树一定不是满二叉树 public static boolean isCBT1(Node …

沁恒CH32V30X学习笔记07---多功能按键框架使用

多功能按键框架使用 参考开源框架: GitHub - 0x1abin/MultiButton: Button driver for embedded system 框架使用说明: ch32gpio基本驱动 https://blog.csdn.net/u010261063/article/details/136157718 MultiButton 简介 MultiButton 是一个小巧简单易用的事件驱动型按…

python数据类型-字典

1 字典定义 1)字典中的元素时一个个键值对,键和值之间用冒号:分隔,键值对元素之间用逗号分隔,格式:d {key1 : value1, key2 : value2 } 2)字典中的键是唯一的,值可以重复 注**&…

Java 中是否存在内存溢出、内存泄漏?如何解决?举例说明(企业真题)

Java 中是否存在内存溢出、内存泄漏?如何解决?举例说明 解答: 存在! 在程序执行的过程中,明明这是不再使用的内存空间了,但是jvm通过相关的算法判定以后不认为这是垃圾,那么就构成了内存泄漏…

相机图像质量研究(40)常见问题总结:显示器对成像的影响--画面泛白

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

阿里云幻兽帕鲁Windows 服务器怎么下载存档?

阿里云幻兽帕鲁Windows 服务器怎么下载存档?通过远程连接window服务器桌面的方式。 远程连接到阿里云的 Windows 服务器后,可以将压缩后的存档文件,拖动到 workbench\Download 目录后,就会触发浏览器的文件下载,然后将…

CSP-J 2023 复赛第2题:公路 ← 贪心算法

【题目来源】https://www.luogu.com.cn/problem/P9749https://www.acwing.com/problem/content/5311/【题目描述】 小苞准备开着车沿着公路自驾。 公路上一共有 n 个站点,编号为从 1 到 n。 其中站点 i 与站点 i1 的距离为 vi 公里。 公路上每个站点都可以加油&…

[职场] 预算员简历模板 #媒体#微信#笔记

预算员简历模板 个人简历 基本资料 姓名:蓝小小 性别:男 年龄:28岁 籍贯:重庆 现居地址:重庆渝中区 政治面貌:中共党员 婚姻状况:已婚 求职意向 意向岗位:预算员 期望薪…

notepad++的下载与使用

1.进入官网下载 https://notepad-plus-plus.org/ 点击下载即可 2.选择中文简体 3.建议安装在D盘 其余步骤按照指示就行 4.安装后这几个是必选的 设置完成后就可以写中文了 以此为例 结果为

mysql mgr集群部署

一、前言 mysql mgr集群是为了实现mysql高可用,分为单主集群和多主集群,单主集群只有一个主节点可写,节点发生故障时,自动进行主从的故障切换,多主集群所有节点都可写,当节点发生故障时,将故障节…

git操作---> 使用git push,和使用git push origin HEAD:[分支名]有什么区别呢?

git push origin HEAD:branch2: 这个命令显式地指定了你要推送的本地引用(HEAD),以及远程仓库的目标引用(origin/branch2)。 HEAD 是一个引用,指向你当前所在的本地分支的最新提交。 这个命令的意图是将当…

如何在iStoreOS软路由系统中安装cpolar实现公网远程本地电脑桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是:** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能,也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…

流量控制 可靠传输 滑动窗口之间的关系 以及 流量控制和可靠传输的关系

流量控制 可靠传输 滑动窗口之间的关系 流量控制、可靠传输和滑动窗口是网络通信中的三个重要概念,它们之间有密切的关系。 流量控制是指在数据传输过程中控制发送方发送数据的速率,以避免接收方无法及时处理大量数据而导致的数据丢失或拥塞。流量控制…

Python算法100例-1.8 冒泡排序

完整源代码项目地址,关注博主私信’源代码’后可获取 1.问题描述2.问题分析3.算法设计4.完整的程序5.问题拓展 1.问题描述 对N个整数(数据由键盘输入)进行升序排列。 2.问题分析 对于N个类型相同的数,…

【Node.js】path 模块进行路径处理

Node.js 执行 JS 代码时,代码中的路径都是以终端所在文件夹出发查找相对路径,而不是以我们认为的从代码本身出发,会遇到问题,所以在 Node.js 要执行的代码中,访问其他文件,建议使用绝对路径 实例&#xff1…

040 构造器详解

无参构造器 当一个类未定义任何构造器时,代码编译后会自动生成一个无参构造器,如果只需要无参构造器就可以直接省略定义。 public class Person {public Person(){}String name;int age; }public class Person {String name;int age; }有参构造器 有参…

自定义表单工作流的优势特点有啥?

低代码技术平台是提升办公效率的得力武器,在当今竞争激烈的社会中获得了很多中小企业的喜爱与支持。流辰信息是一家专业研发低代码技术平台的服务商,IBPS开发平台用于很多行业中,助力企业实现了办公流程化。自定义表单工作流的优势多、简单灵…