Kettle定时变量+增量抽MySQL到ES中

举报
写程序的小王叔叔 发表于 2022/05/15 13:02:40 2022/05/15
【摘要】 主页:小王叔叔的博客 本博客内容,实践前,请先逐一浏览,然后再逐一学习。

主页小王叔叔的博客

支持:点赞👍关注✔️收藏💖


一、作业、转换图



二、实现步骤思路

1. 安装 kettle   elk 

2.在kettle中 新创建一个“转换”

3.根据“转换”创建“作业”

4.执行“作业”内容

三、转换图 实现

3.1 主-转换图 : 

  主要内容本博客中已经编写完毕 , 【增量】是在原本转换图基础上进行修改

【3.1 转换图解析】:  主要

3.1.1   -  1.连接DB抽取对应学生数据

SELECT  * , DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') as create_time  
from course_issue_detail   
where  delete_flag='0' and  issue_type='1'  and  create_time > '${createTime}'  
-- limit 201,210; 

3.1.2  -  2.替换null值

3.1.3 -  3.ESInsert_写入数据 

【具体配置 见博客: (原)Windows10 Kettle Spoon 抽取MySQL数据 保存到 本地ES【二】_写程序的小王叔叔的博客-CSDN博客_spoon抽取数据 】

3.2 辅助-转换图

3.2.1 - 修改更新时间

select DATE_FORMAT(max(createTime,'%Y-%m-%d %H:%i:%s')) as createTime from etl_last_timestamp WHERE index_name = 'es_student_sub_test'

update etl_last_timestamp set createTime = '?' where index_name = 'es_student_sub_test'
 

四、作业图实现

4.1 创建作业图: 主要

4.2.1 - 创建更新表 

    1.检查表 1.1创建表:

           首先要 创建 中间转换时间戳的表 【etl_last_timestamp】,用来保存最新更新替换更新的时间

       先检查是否存在,然后进行创建 


CREATE TABLE `etl_last_timestamp` (	
	`createTime` DATETIME(3) NULL DEFAULT NULL COMMENT '抽取的最后的时间戳'	
)
COMMENT='记录抽取的最大的时间戳'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

4.2.2 - 2.变量赋值 

var prevRow=previous_result.getRows();
if (prevRow == null && (prevRow.size() =0))
{

 	false;

}else{	  	 
	parent_job.setVariable("createTime",prevRow);	
	parent_job.setVariable("size",prevRow.size());
	parent_job.setVariable("i",0);
	parent_job.setVariable("createTime",prevRow.get(0).getString("createTime",""));	 
	true;
}

4.2.3 -  3.调用变量转换业务

【见本博客 3.2 辅助-转换图】

4.2.4 -  4.循环控制

                    

4.2.5 - 输出记录 / 计数器累加 

var list_Tables = parent_job.getVariable("createTime").replace("[","").replace("]","").split(",");
var size = new Number(parent_job.getVariable("size"));
var i = new Number(parent_job.getVariable("createTime")+1);
if( i<size ){
	parent_job.setVariable("createTime",list_Tables[i]);
}
parent_job.setVariable("i",i);
true;

遗留问题: 抽取成功后,成功输出到Excel文件中,后期逐步修改整理。。。

五、完成效果

本博客内容整理成资源以上传到【本资源】中:20210511_kettle抽取mysql增量到ES中.zip-项目管理文档类资源


转载声明:本文为博主原创文章,未经博主允许不得转载

⚠️注意⚠️~

💯本期内容就结束了,如果内容有误,麻烦大家评论区指出

如有疑问❓可以在评论区留言💬或私信留言💬,尽我最大能力🏃‍♀️帮大家解决👨‍🏫!

如果我的文章有帮助,点赞👍关注💖,您的鼓励是我分享的动力🏃🏃🏃~









【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。