关于大数据:大数据-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,获取更多内容

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理