zoukankan      html  css  js  c++  java
  • Kettle基本概念 之 Kettle设计模块

    转换

    转换(transformtion)是ETL解决方案中最主要的部分,它处理抽取、转换、加载各阶段各种对数据的操作。

    转换包括一个或多个步骤(step),如读取文件、过滤输出行、数据清洗或将数据加载到数据库。

    转换里的步骤通过跳(hop)来连接,跳定义了一个单向通道,允许数据从一个步骤向另一个步骤流动。

    除步骤和跳,转换还包括了注释(note),注释是一个小的文本框,可以放在转换流程图的任何位置。注释的主要目的是使转换文档化。


    一个简单转换的例子

    步骤

    步骤是转换里的基本组成部分,“表输入”和“文件文件输出”显示了两个步骤。

    转换的跳

    跳(hop)就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路。

    注意: 跳在转换里不能循环。因为在转换里每个步骤都依赖前一个步骤获取字段值。

    并行

    当转换启动后,所有步骤都同时启动,从它们的输入跳中读取数据,并把处理过的数据写到输出跳,直到输入跳里不再有数据,就路上步骤的运行。

    转换里的步骤几乎是同时启动的,所以不可能判断出哪个步骤是第一个启动的步骤。

    如果想要一个任务沿着指定的顺序插,那么就要使用“作业”了。

    数据行

    数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合,字段包括下面几种数据类型:

    • String: 字符类型
    • Number: 双精度浮点数
    • Integer: 带符号长整型
    • BigNumber: 任意精度数值
    • Date: 带毫秒精度的日期时间值
    • Boolean: 取值为true和false的布尔值
    • Binary: 二进制字段可以包括图形、声音、视频及其他类型的二进制数据

    数据转换

    显式转换数据类型,如通过“字段选择”步骤中直接选择要转换的数据类型。

    隐式转换数据类型,如将数值类型数据写入数据库中的varchar类型字段。

    常见数据类型转换有:

    • Date和String的转换
    • Numberic和String的转换
    • Boolean和String的转换
    • String和Boolean的转换
    • Integer和Date的转换
    • Date和Integer的转换

    作业

    大多数ETL项目都需要完成各种各样的操作,而且这些操作要按照一定顺序完成。因为转换以并行方式执行,就需要一个可以串行执行的作业来处理这些操作。

    一个作业包括一个或多个作业项,这些作业项以某种顺序来执行。作业执行顺序由作业项之间的跳(job hop)和每个作业项的执行结果来决定。

    一个典型的加载数据仓库的作业

    作业项

    作业项是作业的基本构成部分。如同转换的步骤,作业项也可以使用图标的方式图形化展示 。

    默认情况下,所有的作业项都是以串行方式执行的,只是在特殊的情况下,以并行方式执行。

    因为作业顺序执行作业项,所以必须定义一个地点。有一个叫“开始”的作业项就定义了这个起点。一个作业只能定义一个开始作业项。

    作业跳

    作业的跳是作业项之间的连接线,它定义了作业的执行路径。

    作业项的运行结果的判断如下:

    • 无条件执行(黄色带锁连接线)


      黄色带锁连接线
    • 当运行结果为真是执行(绿色对钩号连接线)


      绿色对钩号连接线
    • 当运行结果为假时执行(红色停止图标连接线)


      红色停止图标连接线

    多路径和回溯

    回溯算法就是:假设扫行到了图里的一条路径的某个节点时,要依次扫行这个节点的所有子路径,直到没有再可以执行的子路径,就返回该节点的上一节点,再反复这个过程。

    使用回溯算法串行执行多个路径

    上图A、B、C三个作业项的执行顺序如下:

    • 首先 “开始” 作业项搜索所有下一个节点作业项,找到了 “A” 各 “C”
    • 执行 “A”
    • 搜索 “A” 后面的作业项,发现了 “B”
    • 执行 “B”
    • 搜索 “B” 后面的作业项,没有找到任何作业项
    • 回到 “A” ,也没有发现其他作业项
    • 回到Start,发现另一个要执行的作业项 “C”
    • 执行 “C”
    • 搜索 “C” 后面的作业项,没有找到任何作业项
    • 回到Start,没有找到任何作业项
    • 作业结束

    因为没有定义执行顺序,所以上面例子的执行顺序除了ABC,还可以有CAB。

    并行执行

    有时候需要将作业项并行执行。一个作业项可以并发的方式执行它后面的所有作业项。如下图:

    并行执行的作业项

    注意:通过“Run Next Entries in Parallel” 设置

    作业项结果

    作业执行结果不仅决定了作业的执行路径,而且还向下一个作业项传递了一个结果对象。

    结果对象包括了下面一些信息:

    • 一组数据行
    • 一组文件名
    • 读、写、输入、输出、更新、删除、拒绝的行数和转换里的错误数
    • 脚本作业项的退出状态
    JavaScript 作业项中的表达式

    转换或作业的元数据

    转换和作业是Kettle的核心组成部分。它们可以用XML格式来表示,它们的这些表示方式,都依赖下面的这些元数据:

    • 名字
    • 文件名
    • 目录
    • 描述
    • 扩展描述

    数据库连接

    Kettle里的转换和作业使用数据库连接到关系型数据库。Kettle数据连接实际是数据库的描述,也就是建立实际连接需要的参数。实际连接只是在运行时才建立。

    工具

    Kettle里有不同工具,用于ETL的不同阶段。主要工具如下:

    • Spoon:图形界面工具,快速设计和维护复杂的ETL工作流
    • Kitchen:运行作业的命令行工具
    • Pan:运行转换的命令行工具
    • Carte:轻量级的(大概1MB)Web服务器,用来远程执行转换或作业。一个运行有Care进程的机器可以作为从服务器,从服务器是Kettle集群的一部分。

    资源库

    资源库主要用于开发人员在一起工作,开发人员之间的合作。目前有3种觉资源库:

    • 数据库资源库:数据库资源库是把所有的ETL信息保存在关系型数据库中。

    • Pentaho资源库:Pentaho资源库是一个插件,在Kettle的企业版中有这个插件。

    • 文件资源库:文件资源库是在一个文件目录下定义一个资源库。这里的文件目录包括:zip文件、Web服务、FTP服务等。



    作者:小纠结在简书
    链接:https://www.jianshu.com/p/a02480e2dda1
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Code Forces Gym 100886J Sockets(二分)
    CSU 1092 Barricade
    CodeChef Mahesh and his lost array
    CodeChef Gcd Queries
    CodeChef GCD2
    CodeChef Sereja and LCM(矩阵快速幂)
    CodeChef Sereja and GCD
    CodeChef Little Elephant and Balance
    CodeChef Count Substrings
    hdu 4001 To Miss Our Children Time( sort + DP )
  • 原文地址:https://www.cnblogs.com/purple5252/p/12658151.html
Copyright © 2011-2022 走看看