2概述

设计模块最主要的操作分为: 转换和作业

选择转换和作业后就可以选择对应主对象树和核心对象

主对象树大同小异

核心对象是不同的
比如转换需要用到的CSV表输入, 表输入等都在这里可以选择

而作业的核心对象是:

2.1 转换

转换是ETL解决方案中最主要的部分, 它处理抽取、转换、加载各阶段各中对数据行的操作。转换1/N个步骤。
如图, 下面是一个转换的过程

图中每个框都是一个步骤(step),而连接框的线就是所谓的跳(hop). 跳定义了一个单向通道, 允许数据由一个通道向另一个通道移动。在Kettle中数据的单位是行。

步骤

步骤是转换的基本组成部分(图中的框框) 它有以下关键属性:
1 每个步骤都有一个名字,在转换范围内唯一
2 每个步骤都会读,写数据行 (唯一的例外是生成记录的步骤)
3 步骤将数据写到与之相连的一个或多个输出跳, 再传送到跳的另一端的步骤. 对另一端步骤来说, 这个跳就是一个输入 跳, 步骤通过输入跳接受数据
4 大多数的步骤都可以有多个输出跳.
【一个步骤的数据发送(输出)可以设置为轮流发送和复制发送。轮流发送是将数据行依次发给每一个输出跳(每个输出获得的输出合起来才是完整数据),复制发送是将全部数据发给所有输出跳(每个输出都一样,是全部的数据)。】
在创建跳的时候可以选择:

5 运行转换时,一个线程运行一个步骤和步骤的多份copy,所有步骤的线程几乎同时运行,数据行连续地流过步骤之间的跳。

除了上面标准的属性,具体每个步骤根据其类型还有不同的区别。不再赘述。

转换的跳

跳(hop)就是步骤之间带箭头的连线,定义了步骤之间的数据通路。跳实际是两个步骤之间被称为行集的数据行缓存。
当行集满了,向行集写数据的步骤将停止写入,知道行集里又有了空间。当行集空了,从行集读取数据的步骤停止读取,直到行集里有了可读的数据行。

注意,跳在转换里不能循环。

并行

跳的这种基于行集缓存的规则允许每个步骤都由一个独立的线程运行,这样并发程度最高。
这一规则也徐允许数据以最小消耗内存的数据流方式来处理.
对于Kettle不可能定义一个执行顺序。所有步骤都以并发的方式执行:当转换启动后,所有步骤同时启动,从他们的输入跳中读取数据,并把处理过的数据写到输出跳,直到输入跳不再有数据,就中止步骤的运行。直到数据重新进来.
当所有的步骤都中止了,整个转换就中止了.
因为所有步骤都同时执行,从这个意义上来说, 转换是没有起点和终点的. 如果要一个任务沿着指定的顺序执行,就要使用后面说的"作业".

数据行

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

数据转换

显式数据转换: 在字段选择步骤中选择转换的数据类型.
隐私转换就是将数据类型数据写入数据库的varcahr类型字段.
比如:

2.2 作业

让一些操作按照一定的顺序完成(如运行中发送错误的应对操作, 如验证库表存在等) 
因为转换以并行方式执行, 就需要一个可以串行执行的作业来处理这些操作.

一个作业包括一到多个作业项, 这些作业项以某种顺序来执行. 作业执行顺序由作业项之间的跳和每个作业项执行结果来定.

作业项

作业项是作业的基本构成. 如同转换的步骤.
不同之处:
1 新步骤名字是唯一的. 但作业项可以有影子拷贝. 这样就可以把一个作业项放在多个不同的位置. 这些影子拷贝是相同的,修改了其中一份, 其余的都随之改变.
2 作业项传递的是结果对象. 结果对象包含了数据行. 他们不是以流的方式实时传递. 而是等一个作业项执行完毕,再传递给下一个作业项.
3 默认情况,所有作业项都以串行执行. 值在特殊情况下才以并行执行.
因为作业顺序执行作业项, 所以必须定义一个起点(叫做开始的作业项, 并且只能有一个).

作业跳

作业项之间的连接线, 定义了作业的执行路径.
每个作业项的不同运行结果决定了作业后续的不同执行路径.
* 无条件执行: 黑色带锁图标表示. 无论上一个作业项成功与否都执行下一个作业项.
* 为真时执行: 绿色打勾图标表示. 上一个作业项执行为真, 才执行才可以作业项目.(一般需要无错误执行)
* 为假时执行: 红色停止图标表示. 上一个作业项执行为假或者没有成功执行时,执行下一个作业项.
直接点击即可切换类型:

多路径和回溯

Kette使用一种回溯算法来执行作业里的素有作业项, 而且作业项的执行结果(真/假)也同事决定执行路径.

回溯算法:  假设执行到一条路径的某个节点时, 依次执行这个节点的所有子路径, 直到没有再可以执行的子路径, 就退回该节点的上一个节点, 如此反复.
举例:

并行执行

一个作业项也可以并发的方式执行后面的所有作业项:

作业项结果

作业项结果包含以下信息:
一组数据行
一组文件名...
错误的行数和数量..
等..

2.3 转换或作业的元数据


2.4  数据库连接, 资源库

 略.




Kettle解决方案: 第二章 Kettle基本概念的更多相关文章

  1. Kettle解决方案: 第一章ETL入门

    第一章ETL入门 1.1 OLPT和数据仓库对比 普通的事务系统和商业智能系统(BI)有什么区别? 1个独立的普通事务系统也被称为在线事务处理系统(OLTP) 商业智能系统也常被称为决策支持系统(DS ...

  2. Linux/Unix系统编程手册 第二章:基本概念

    本章预热与后续系统编程有关的概念. 术语“操作系统”通常包含2种含义:一是指完整的软件包,包括管理计算机资源的核心组件,已经附带的标准软件:二是独指管理硬件的内核. 内核具有诸多概功能,包括: 进程管 ...

  3. [目录]Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案

    第一部分:开始 1         ETL入门 1.1   OLTP和数据仓库对比 1.2   ETL是什么 1.2.1          ETL解决方案的演化过程 1.2.2          ET ...

  4. ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念

    ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 由于工作事 ...

  5. 《AngularJS深度剖析与最佳实践》笔记: 第二章 概念介绍

    第二章 概念介绍 2.1 什么是UI? 用户界面包括内容(静态信息+动态信息), 外观, 交互. 在前端技术栈中分别由HTML, CSS和JS负责. 进一步抽象, 分别对应于MVC三个主要部分: Mo ...

  6. 【黑金原创教程】【TimeQuest】【第二章】TimeQuest模型角色,网表概念,时序报告

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  7. 第二章 C语言编程实践

    上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...

  8. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第二部分,其余章节将陆续放出.上一 ...

  9. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(1)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第一部分,其余章节将陆续放出.上一 ...

随机推荐

  1. Openresty 操作Cookie

    Openresty 操作cookie共有两种方法: 1.直接操作 1.1 获取Cookie 获取所有cookie: ngx.var.http_cookie, 这里获取的是一个字符串,如果不存在则返回n ...

  2. ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一)

    前言: 第一次接触ABP的项目是在2018年6月份,但是当时没有深入具体的研究,而今天因为工作的需要,需要学习.了解这个框架,在时隔半年之后,今天重新下载了这个项目,虽然在园子里有很多前辈们写的这类的 ...

  3. 2186 Popular Cows

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 41771   Accepted: 16955 De ...

  4. 【linux】State : Uninterruptible, pid: 3936

    运行centos7中yum命令时提示: Existing lock /var/run/yum.pid: another copy is running as pid 3936.Another app ...

  5. PHP实现RabbitMQ消息队列(转)

    本篇文章给大家带来的内容是关于PHP和RabbitMQ实现消息队列的完整代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 先安装PHP对应的RabbitMQ,这里用的是 php_a ...

  6. Skynet服务热点火焰图分析

    最近花了一周时间对场景服务进行热点分析,利用以前的火焰图工具做了一点微小的贡献,分享下心得(仓库地址在https://github.com/spin6lock/skynet_systemtap_set ...

  7. JavaSE-2018.12.20更新

    JDK:Java Development Kit(java开发工具包,是提供给java开发人员使用的,包含了开发工具(编译工具javac.exe和打包工具jar.exe等)+JRE) JRE:Java ...

  8. Error: “app_name” is not translated in af

    in values/strings.xml   "app_name" is not translated in af, am, ar, be, bg, ca, cs, da, de ...

  9. KeyguardSimPinView

    /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Versi ...

  10. 练习题:试使用C#编程实现银行、ATM等功能

    练习题:试使用编程实现银行.ATM等功能 using System; using System.Collections.Generic; using System.Linq; using System ...