kettle从入门到精通 第六十七课 ETL之kettle 再谈kettle阻塞,阻塞多个分支的多个步骤

kettle,etl · 浏览次数 : 0

小编点评

在ETL(Extract, Transform, Load)流程中,当需要多个分支处理完毕后记录同步结果时,可以使用Blocking Step来进行阻塞处理。以下是一个简单的案例,展示了如何使用阻塞step来同步处理多个分支。 ## 案例 ### 1. 流程图 ![ETL Workflow](https://img.cnblogs.com/blog/1329038/2019/01/09/11574925.png) 1. **表输入步骤**:加载数据,SQL为`select * from t1`,t1表中有三条数据。 2. **当前数据步骤**:写日志步骤,打印数据读取记录。 3. **延迟2秒和延迟3秒步骤**:暂停步骤,可随时执行,用于演示执行顺序。 4. **模拟表输出1和模拟表输出2**:实际上是写日志步骤,为了模拟表输出步骤,方便演示。 5. **Blocking step步骤**:同时阻塞模拟表输出1和模拟表输出2,只有当两个步骤都执行完毕之后数据才会通过Blocking step。 6. **打印日志记录最后一行数据**:当前数据步骤使用的数据发送是Round-Robin轮询调度。 ### 2. 案例说明 在这个案例中,有两个分支需要处理: 1. **模拟表输出1**:该步骤负责加载数据,并将数据写入模拟表输出文件中。 2. **模拟表输出2**:该步骤与模拟表输出1类似,也负责加载数据并写入模拟表输出文件中。 这两个步骤需要同步处理完毕,以便后续步骤可以继续执行。 使用Blocking Step,我们可以确保在模拟表输出1和模拟表输出2都执行完毕后,才会继续执行下一步骤。 ### 3. 案例优化 #### a. 使用Round-Robin轮询调度 在当前数据步骤中,我们可以使用Round-Robin轮询调度来发送数据到模拟表输出1和模拟表输出2。这样,每个步骤都会收到相同的数据,并保证数据的完整性。 #### b. 使用数据复制方式 如果我们需要从A表读取数据,并将数据同时写入B表和C表,此时Blocking Step依然有效。在这种情况下,我们可以设置一个变量来存储A表中的最新数据,然后根据该变量来决定写入哪个表。 ## 总结 使用Blocking Step可以有效地同步处理多个分支。它可以确保所有分支都执行完毕后,才能继续执行后续步骤。这可以帮助我们避免因分支处理不同步而导致的问题,提高ETL流程的稳定性和效率。

正文

场景:ETL沟通交流群内有小伙伴反馈,如何多个分支处理完毕之后记录下同步结果呢?或者是调用后续步骤、存储过程、三方接口等。

解决:使用步骤Blocking step进行阻塞处理即可。

 1、 如下流程图中利用Blocking step步骤同时阻塞【模拟表输出1】和【模拟表输出2】两个步骤,只有当两个步骤都执行完毕之后数据才会通过Blocking step.

 

1) 表输出步骤加载数据,sql为select * from t1,t1表中有三条数据。

2)当前数据步骤为写日志步骤,打印数据读取记录。

3)延迟2秒和延迟3秒步骤可以暂停步骤立刻执行,添加为了演示执行顺序效果。

4)模拟表输出1和模拟表输出2实际上是写日志步骤,为了模拟表输出步骤,方便演示。

5)将模拟表输出1和模拟表输出2同时连接Blocking step步骤,之后打印日志记录最后一行数据。

注意:这里的最后一行数据不是表输入步骤中的最后一行数据,而是通过模拟表输出1和模拟表输出2两个步骤中的最后一条数据。

6)当前数据步骤使用的数据发送是Round-Robin轮询调度。

7)下面为执行的视频,需公众号查看。

2、上边的案例是采用Round-Robin轮询调度,下面我们调整数据发送为数据复制方式,该方式可以将当前数据的数据复制两份,每份的数据都是一样的。

这种情况适用于从A表读取数据,同时写入B表和C表,这种情况下Blocking step步骤依然有效。

 

 

 

与kettle从入门到精通 第六十七课 ETL之kettle 再谈kettle阻塞,阻塞多个分支的多个步骤相似的内容:

kettle从入门到精通 第六十七课 ETL之kettle 再谈kettle阻塞,阻塞多个分支的多个步骤

场景:ETL沟通交流群内有小伙伴反馈,如何多个分支处理完毕之后记录下同步结果呢?或者是调用后续步骤、存储过程、三方接口等。 解决:使用步骤Blocking step进行阻塞处理即可。 1、 如下流程图中利用Blocking step步骤同时阻塞【模拟表输出1】和【模拟表输出2】两个步骤,只有当两个步

kettle从入门到精通 第六十九课 ETL之kettle kettle cdc mysql,轻松实现实时增量同步

1、之前kettle cdc mysql的时候使用的方案是canal+kafka+kettle,今天我们一起学习下使用kettle的插件Debezium直接cdc mysql。 注:CDC (Change Data Capture) 是一种技术,用于捕获和同步数据库中的更改。 1)Debezium步

kettle从入门到精通 第六十六课 ETL之kettle kettle阻塞教程,轻松获取最后一行数据,so easy

场景:ETL沟通交流群内有小伙伴反馈,如何在同步一批数据完成之后记录下同步结果呢?或者是调用后续步骤、存储过程、三方接口等。 解决:使用步骤Blocking step进行阻塞处理即可。 1、下面的demo演示从表t1同步数据至表t2(t1表中有三条数据,t2为空表,两个表表结构相同),然后数据同步完

kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数

场景: kettle中http post步骤如何发送http请求且传递body参数? 解决方案: http post步骤中直接设置Request entity field字段即可。 1、手边没有现成的post接口,索性用python搭建一个简单的接口,关键代码如下(安装python环境略): fro

kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏

场景:输入在指定的错误(错误应涵盖数据类型不匹配的情况)行数内,trans不报错,但通过错误处理步骤捕捉,并记入文件,整个数据管线正常完成直至处理完最后一个输入行。 解决方案:使用步骤【数据检验】进行处理。这个步骤和常规的业务系统对接三方接口一个逻辑,将符合规则的数据放行,不符合的记录。 数据准备(

使用Kettle定时从数据库A刷新数据到数据库B

# 一、需求背景 由于项目场景原因,需要将A库(MySQL)中的表a、表b、表c中的数据``定时T+1`` ``增量``的同步到B库(MySQL)。这里说明一下,不是数据库的主从备份,就是普通的数据同步。经过技术调研,发现Kettle挺合适的,原因如下: 1. Kettle (数据抽取、清洗、转换、

工作疑难问题解决4例

记录一下工作上疑难问题解决: 一,方便的页面监控 前几天早上,负责的kettle抽取数据表的任务又报错了,早上看手机有4个未接报警电话,一看是人员表,原来昨天报表系统有个大的查询一直未查询完成,导致truncate这个人员表,无法活动meta的锁,后续执行抽取和计算的都报错。为解决以前这个很偶发的大