大数据 ETL 处理工具 Kettle 的核心概念
宏观了解 Kettle
上一篇中对 Kettle 进行了简单的介绍,并快速体验了一把 Kettle,完成了「把数据从 CSV 文件复制到 Excel 文件」 HelloWrold 级别的功能。
而在实际工作中,可以使用 Kettle 的图形化的方式定义复杂的 ETL 程序和工作流,如下图就是通过一系列的转换(Transformation) 完成一个作业(Job)流程。
Kettle 核心概念
转换
转换(Transaformation)是 ETL 中最主要的部分,它处理抽取、转换、加载各种对数据行的操作。 转换包含一个或多个步骤(Step),如上图中的「CSV 文件输入」、「Excel输出」步骤,还包括过滤数据行、数据清洗、数据去重或将数据加载到数据库等等。 转换里的步骤通过跳(hop)来进行连接,跳定义一个单向通道,允许数据从一个步骤向另一个步骤流动。
步骤(Step)
Kettle 里面的,Step 步骤是转换里的基本的组成部分,上篇快速体验的案例中就存在两个步骤,「CSV文件输入」和「Excel输出」,一个步骤有如下几个关键特性:
-
步骤需要有一个名字,这个名字在转换范围内唯一。
-
每个步骤都会读、写数据行(唯一例外是「生成记录」步骤,该步骤只写数据)。
-
步骤将数据写到与之相连的一个或多个输出跳,再传送到跳的另一端的步骤。
-
大多数的步骤都可以有多个输出跳,当有多个输出时,会弹出如下图所示的警告进行选择分发还是复制。一个步骤的数据发送可以被设置为分发和复制,分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤。
跳(Hop)
Kettle 里面的,跳(Hop),跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路,如上图。在 Kettle里,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动, 跳是两个步骤之间的被称之为行集的数据行缓存(行集的大小可以在转换的设置里定义,如下图)。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间;当行集空了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行。
数据行
在 Kettle 里,数据的单位是行,数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合,字段包含下面几种数据类型。
- String:字符类型数据
- Number:双精度浮点数
- Integer:带符号长整型(64位)
- BigNumber:任意精度数据
- Date:带毫秒精度的日期时间值
- Boolean:取值为 true 和 false 的布尔值
- Binary:二进制字段可以包含图像、声音、视频及其他类型的二进制数据
同时,每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据。通常包含下面一些信息:
- 名称:行里的字段名应用是唯一的
- 数据类型:字段的数据类型
- 格式:数据显示的方式,如 Integer 的#、0.00
- 长度:字符串的长度或者 BigNumber 类型的长度
- 精度:BigNumber 数据类型的十进制精度
- 货币符号:¥
- 小数点符号:十进制数据的小数点格式
- 分组符号:数值类型数据的分组符号
步骤是并行的
这种基于行集缓存的规则(前面 「跳(Hop)」节提到),允许每个步骤都是由一个独立的线程运行,这样并发程度最高。这一规则也允许数据以最小消耗内存的数据流的方式来处理(设置合理的行集大小)。在数据仓库建设过程中,经常要处理大量数据,所以这种并发低消耗内存的方式也是 ETL 工具的核心需求。
对于 Kettle 的转换,所有步骤都以并发方式执行,即:当转换启动后,所有步骤都同时启动,从它们的输入跳中读取数据,并把处理过的数据写到输入跳,直到输入跳里不再有数据,就中止步骤的运行。当所有的步骤都中止了,整个转换就中止了。
总结
- Kettle 通过一系列的转换(Transformation) 完成一个作业(Job)流程
- 通过了解 Kettle 的核心概念,得知 Kettle 是通过「跳(Hop)」将数据流从一个步骤到另一个步骤的移动,每个步骤都是由一个独立的线程运行,这样提高并发程度,但相比 Hadoop 生态移动计算模型更加昂贵
- Kettle 本身由 Java 开发,需要配置合理的 JVM 参数
欢迎关注公众号:HelloTech,获取更多内容

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
前端性能优化实践 | 百度APP个人主页优化
性能是每个前端工程师都应该关注的话题,通用的优化手段已有许多文章和实践,就不再赘述,本篇以百度 App 个人主页为例,聊聊针对业务特点进行的一些性能优化实践。适用于:传统意义的优化手段能用的都用了:打包拆包,缩减体积和 HTTP 请求数、CDN 和按需加载等,但性能方面仍不太理想。 01 优化三部曲 下面介绍下我们的优化三部曲,这也是所有优化项目的基本步骤: 现状摸底 发现问题 解决问题 第一步:定义指标,建设报表 优秀方案的制定首先需要准确的数据做支撑。 一般来说,前端性能指标包括DOM ready、First Contentful Paint、白屏、首屏、用户可操作时间、onload 时间等,在实际中需要结合业务本身的特点进行定义,一般通用的指标定义并不能体现用户在当前业务下的真实体验。 个人主页是在百度 App 客户端内的 web 页面,有 hybrid 版(使用 file 协议直接加载本地 HTML 和 JS、CSS)和 web 版(打开一个 web URL)两种不同的打开方式。 首先,我们了解一下个人主页页面的结构: 头部区域展示当前作者的个人信息,tab 区域则是作者创作产...
- 下一篇
正式发布!中国首个 LF Edge 捐赠项目 Baetyl 2.2 发布
Baetyl 作为中国首个加入 LFEdge 基金会的边缘计算项目,自 2019 年由百度捐赠以来,在开放中立的社区环境中得到不断的支持与发展。 在众多活跃的贡献者的努力下,Baetyl 实现了更多具有挑战性的功能,正式升级为 Baetyl v2.2 版本。此次升级的新特性依然本持着云原生的理念,助力 Baetyl 向着构建开放、安全、可扩展、可控制的智能边缘计算平台的方向前进。 具体来说,相较于之前发布的 Baetyl v2.0 版本,v2.2 版本的升级亮点包括: 新增了对 EdgeX Foundry 的支持 新增了对支持边缘集群环境的所需的 API 定义 新增了对 DaemonSet 负载类型应用的支持 新增了对已部署应用的远程调试、远程日志查看的 API 定义 新增了对 GPU 监控及共享功能的 API 定义 提供更多的官方模块 以上的功能特性在边缘计算场景下具有较高实用价值的同时,并能满足大量急迫的需求。 对 EdgeXFoundry 的支持 Baetyl 2.2 已完成对开源计算框架 EdgeX Foundry 的兼容,通过 baetyl 的云端管理套件,开发者可以向边...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7