龙空技术网

Kettle入门概述:围绕ETL主过程,提供一份完整的数仓开发路线图

数据地平面 231

前言:

当前朋友们对“kettle操作”大约比较关心,兄弟们都想要分析一些“kettle操作”的相关知识。那么小编也在网摘上汇集了一些关于“kettle操作””的相关文章,希望你们能喜欢,朋友们快快来了解一下吧!

由于Kettle的众多优点(免费、开源;易部署,多平台支持;可视化、拖拽式操作,组件功能丰富,易上手等),很多企业会选择它来作为ETL开发的工具。

ETL的主要过程,就是完成对数据的抽取(Extract)、转换(Transform)、加载(Load),如果再同时做好任务的流程控制、自动调度和监控,一份完整的数仓开发就实现了。

下面将结合ETL主要过程和数仓开发思路,对Kettle的使用做下概述。

脚本文件和操作界面

在Kettle中只存在两种脚本文件,分别是转换(ktr)和作业(kjb),任何开发工作都是在这两类文件中完成的。从文件的类别名称就基本可以知道,转换文件主要负责对数据进行处理,作业文件主要负责整体任务的有序执行。

以转换文件为例,操作界面如下所示:

数据抽取(Extract)

“数据抽取”操作,主要依靠Kettle中的“输入”组件来完成,支持的数据源类型非常多,有Acess、Excel、CSV、XML、数据库表等,如下图所示。其中“表输入”(下图未展示)指的就是数据库表的输入,支持目前的主流数据库类型。

对于大数据类型的数据输入,可以选择“Big Data”组件里的控件来完成工作。

数据转换(Transform)

“数据转换”操作,主要依靠Kettle中的“转换”组件来完成,包含的转换操作有值映射、字段选择、字符串替换、拆分字段等,如下图所示。

对于一些复杂的数据转换操作,有时需要结合“流程”和“连接”等组件里的控件一起完成。

数据加载(Load)

“数据加载”操作,主要依靠Kettle中的“输出”组件来完成,和“输入”组件功能相对应,支持的数据类型有Acess、Excel、CSV、XML、数据库表等,如下图所示。

对于数据量较大的数据输出操作,为了提升执行效率,推荐使用“批量加载”来完成。

整体实现

通过在转换文件中实施上面的几步操作,基本上可以完成单次的某个ETL任务了。但对多个ETL任务的整合管理、批量执行、监控预警等,就需要在作业文件中完成了。

在Kettle的转换文件中,不能定义一个执行顺序,只能定义数据的流向,因为当转换启动时,所有控件都同时启动。数据沿着箭头的方向流动,输入控件读取数据,转换等控件对数据进行处理,输出控件把数据写入目标对象。

对于没有箭头连接的各控件或控件组间,互不影响,每个部分同时且独立运行(可能会有数据方面的冲突),如下图所示:

如果需要一个任务按照指定的顺序逐次执行(例如实际工作中,需要先创建ods层的表,再创建dwd层的表),就要使用作业文件了。

转换文件里只包含控件,而作业文件里可以包含其他作业、转换和可用控件,如下图所示:

下图是一个简单的作业文件示例,实际工作中会比这更加复杂:

整体实现之任务调度

Kettl脚本开发好后,如果需要进行周期性执行的话,就要做好任务的定时调度,这里主要列举任务调度的3种实现方式。

1、使用Kettle自带的“Start”控件实现,缺点是Kettle程序必须保持运行,占用机器内存。

2、借助操作系统的定时功能,使用Kettle自带的命令行执行工具Kitchen、Pan编写命令行执行脚本,然后使用操作系统的定时任务功能,定时执行任务脚本。

3、使用第三方调度平台实现,现在有很多开源的调度平台,方便对任务脚本进行统一的调度管理,例如XXL-JOB。

整体实现之任务监控

针对Kettle脚本的执行情况,我们需要做好监控和预警,这里列举两种实现方式。

1、使用Kettle自带的“发送邮件”控件实现,当脚本运行错误或运行成功时发送邮件通知。

2、把脚本运行情况写入特定的表中,后续可以借助第三方报表系统等,对表中的结果值进行判断。

写在最后

本文只是根据ETL主要过程和数仓开发思路,对Kettle的核心功能做了简要说明,在实际工作中ETL流程会更加复杂和多样,Kettle也有更多实用、好用的功能,需要我们不断去发现和探索。

在关于Kettle的后续文章中,将会继续分享Kettle的使用方法的技巧,为了方便感兴趣的您第一时间获取,请关注下头条号。

标签: #kettle操作 #kettle命令 #kettle数据源