首页 > 其他分享 >kettle庖丁解牛第33篇之从上游抽取最近6个月的数据

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据

时间:2023-05-29 17:32:00浏览次数:39  
标签:庖丁解牛 insert 33 into kettle values 2021 mysql table

引言

在上一篇文章中,我们主要讲解的是:我工作中遇到的一个实际案例,我们要周期性的从上游数据库中抽取数据到本地库,每次抽取的是最近180天的数据。如果上游最近180天的数据量有增加变多了,先把本地表中最近180天的数据删除,然后把上游最近180天的数据抽取到本地库表中。最后把本地库表中所有记录,进行去重复操作。如果上游最近180天的数据量没有化或变少了,本地表不做任何操作。

在本篇文章中,介绍的是:依然我工作中遇到的一个实际案例,我们要周期性的从上游mysql数据库中抽取数据到本地hive库中,每次抽取的是最近6个月的数据。hive中的目标表是按月做的分区,把最近6个月的数据分6次循环插入覆盖到对应的分区中。

数据库表准备

此处演示需要:1台mysql数据库、1台hive数据库,所以演示起来会显得乱一些,为了大家看着清楚,我在命名的时候进行明确的标识。

远端mysql库操作(127.0.0.1)

a、登录mysql

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_kettle

b、创建库和表

创建库

mysql> create database test;

使用指定库

mysql> use test;

查看最近6个月份的时间

mysql>

select date_format(now(),'%Y-%m') as business_time

union all

select date_format(DATE_SUB(now(), INTERVAL 1 MONTH),'%Y-%m') as business_time

union all

select date_format(DATE_SUB(now(), INTERVAL 2 MONTH),'%Y-%m') as business_time

union all

select date_format(DATE_SUB(now(), INTERVAL 3 MONTH),'%Y-%m') as business_time

union all

select date_format(DATE_SUB(now(), INTERVAL 4 MONTH),'%Y-%m') as business_time

union all

select date_format(DATE_SUB(now(), INTERVAL 5 MONTH),'%Y-%m') as business_time;

创建表

mysql> create table t_table(id int,name char(10),ttime char(10));

往表中插入数据

mysql> insert into t_table values(1,'a1','2022-05');

mysql> insert into t_table values(2,'a2','2022-04');

mysql> insert into t_table values(3,'a3','2022-03');

mysql> insert into t_table values(4,'a4','2022-02');

mysql> insert into t_table values(5,'a5','2022-01');

mysql> insert into t_table values(6,'a6','2021-12');

mysql> insert into t_table values(7,'a7','2021-11');

mysql> insert into t_table values(8,'a8','2021-10');

mysql> insert into t_table values(9,'a9','2021-09');

mysql> insert into t_table values(10,'a10','2021-08');

mysql> insert into t_table values(11,'a11','2021-07');

mysql> insert into t_table values(12,'a12','2021-06');

mysql> insert into t_table values(13,'a13','2021-05');

mysql> insert into t_table values(14,'a14','2021-04');

mysql> insert into t_table values(15,'a15','2021-03');

mysql> insert into t_table values(16,'a16','2021-02');

mysql> insert into t_table values(17,'a17','2021-01');

查看表中最终的数据

mysql> select * from t_table ;

c、操作截图

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_02

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_03

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_04

本地hive库操作(10.1.66.70)

a、登录hive

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_sql_05

b、创建库和表

创建库

create database test01;

创建表

CREATE EXTERNAL TABLE test01.t_table_temp(

 id BIGINT comment '编号',

 name VARCHAR(20) comment '姓名',

 ttime VARCHAR(10) comment '业务时间',

 increment_type VARCHAR(20) comment '数据增长类型:1.增量,2.全量',

 load_time VARCHAR(20) comment '加载数据的时间戳')

PARTITIONED BY(btime VARCHAR(10) comment '按业务时间所在月份分区')

ROW FORMAT DELIMITED  

FIELDS TERMINATED BY '|'

STORED AS TEXTFILE;

c、操作截图

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_06

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_kettle_07

DB连接

a、远端Mysql DB连接

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_08

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_09

b、本地Hive DB连接

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_10

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_11

实战演示

转换和作业的简介

此次操作有2个作业和2个转换,说明如下:

(1)、to_scheduling.kjb   作业:整个ETL操作的总开关,调度此作业即可完成整个ETL数据抽取所有操作内容。

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_12

(2)、step1times.ktr   转换:读取上游库表中最近6个月的时间,将数据量保存到变量中。

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_13

(3)、step2hive_load.kjb   作业:调用step3sql_load.ktr转换,将结果txt通过SFTP传到hive服务器的磁盘目录上,然后通过命令把txt的数据加载到Hive的分区表中。

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_sql_14

(4)、step3sql_load.ktr  转换:读取上游最近6个月的数据,将数据保存到本地的txt文件中。

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_15

step1times.ktr

a、获取最近6个月时间

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_16

b、复制记录到结果

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_17

step2hive_load.kjb

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_sql_18

a、读取data转换成文本文件

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_sql_19

b、SFTP 上传

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_20

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_21

c、装载数据到Hive

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_22

step3sql_load.ktr

a、根据不同时间查询数据

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_kettle_23

b、文本文件输出

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_24

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_25

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_sql_26

to_scheduling.kjb

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_27

a、获取最近6个月时间

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_28

b、6个月时间保存到数组并设置变量

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_29

c、循环控制器

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_kettle_30

d、等待10秒

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_kettle_31

e、输出日志

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_32

f、抽取远端数据到本地Hive

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_33

g、循环变量累加

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_34

h、循环结束

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_35

运行总调度作业

a、运行作业

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_36

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_kettle_37

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_38

b、作业控制台输出

作业控制台输出内容比较多(分多张图展示)

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_sql_39

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_40

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_sql_41

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_作业_42

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_hive_43

验证本地库表数据

a、执行命令

select * from t_table_temp

b、操作截图

kettle庖丁解牛第33篇之从上游抽取最近6个月的数据_mysql_44

结束语

在本篇文章中,介绍的是:依然我工作中遇到的一个实际案例,我们要周期性的从上游mysql数据库中抽取数据到本地hive库中,每次抽取的是最近6个月的数据。hive中的目标表是按月做的分区,把最近6个月的数据分6次循环插入覆盖到对应的分区中。

兄弟们,其实想和作是有一段距离的,你想着想着就没有了,可是你做着做着,它就落地了。

啥都别说了,兄弟们后面跟着我干就完了,我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!!

标签:庖丁解牛,insert,33,into,kettle,values,2021,mysql,table
From: https://blog.51cto.com/51power/6373242

相关文章

  • kettle from xml load tranfromation
    演示文件点击查看代码<?xmlversion="1.0"encoding="UTF-8"?><transformation><info><name>C-QDSJZX-QDSJZX-002-1</name><description/><extended_description/><trans_version/>......
  • kettle庖丁解牛第30篇之excel数据精度
    引言在上一篇文章中,我们主要讲解的是:kafka的相关的那些事、命令行操作kafka、API操作kafka、kettle中的kafka的相关组件设置及实战演示。在前面我们用了大量的文章,讲解kettle的基础组件,日常的应用也就够了。后续我通过实战案例还会扩展讲一些组件,比如:java组件、javascript组件等等,......
  • Rockchip RK3399 - 移植uboot 2023.04和内核FIT uImage制作
    ----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6HDMI接口显示屏u-boot:2023.04linux  :5.2.8------------------------------------------......
  • 时代的眼泪:CF1562A The Miracle and the Sleeper 题解 2021-09-23 23:00:33
    CF1562ATheMiracleandtheSleeper题解笑死,晚上熬夜打CF比赛只过了A题还加了CF值!?由于本人太弱,这道橙题都干了1h题目描述有\(T\)组数据,给出一个区间\([l,r]\),在这个区间中选择2个数a,b,使它们a%b的值最大.注意:\(l\ler\le10^9\),\(T\le10^3\)解题步骤暴力......
  • CS 339 Lab 4: 简单事务
    CS339Lab4:SimpleDBTransactionsAssigned:Tuesday,May23,2023Due:Monday,June5,202311:59PMCentralInthislab,youwillimplementasimplelocking-basedtransactionsysteminSimpleDB.Youwillneedtoaddlockandunlockcallsattheappropriate......
  • Jmeter函数助手33-split
    split函数用于根据分隔符拆分传递给它的字符串,并返回原始字符串。Stringtosplit:填入需要转换的字符串函数名称。用于存储在测试计划中其他的方式使用的值:存储结果的变量名Stringtospliton.Defaultis,(comma):填入一个分隔符,不填默认是英文逗号"," 1、分隔符不填则......
  • 洛谷3397地毯
        问题分析:这个比y总的二维差分模板要简单一些,因为他一开始的矩阵都为0,而且矩阵是一个n方阵,那么其实可以用y总的模板来写,下面是二维差分矩阵的原理  #include<iostream>usingnamespacestd;constintN=1010;intb[N][N];voidinsert(intx1,in......
  • 1332. Remove Palindromic Subsequences刷题笔记
    容易陷入思维盲区,只有a和b的字符串,只会有2个或1个回文classSolution:defremovePalindromeSub(self,s:str)->int:return2-(s==s[::-1])......
  • 每日打卡-33
    一.问题描述给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大利润。二.设计思路其实你完全没有必要去想怎......
  • kettle carte 警告 ssl
    如下报错2023/05/2610:03:40WARN:EstablishingSSLconncervgr'sidentityverificationisnotrecommended.AccordingtomyySQL5.5.45+,5.6.26+and5.7.6+requirementsSSLconnectionmustbeestablishedbydefaultifexplicitoptionisn'tset.Forco......