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. FCC-js算法题解题笔记

    题目链接:https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/intermediate-algorithm ...

  2. [C++]几种排序

    本文为大大维原创,最早于博客园发表,转载请注明出处!!! 1.冒泡: #include<cmath> #include<cstdlib> #include<ctime&g ...

  3. 【笔记】.NET开发环境下使用PostgreSQL+Oracle_fdw 实现两个数据库之间数据交互操作(二)

    一 新的可视化工具 因为前文所提到的,看不到外部服务器和外部表的问题,我更换了可视化工具. 好用的新工具PostgreSQL Maestro! 当然如此好用的工具不是免费的,如果想免费使用还请自己去找 ...

  4. oracle 数据库中某个字段逗号分隔,得到对应列中的个数(列转行)实现方法

    由于各种原因,数据的原则问题,导致某个字段上出现多个数据(依据分隔符隔开),比如 name 字段为 张三;李四;王五等等 需求:求一张表中name字段中出现的个数: 想要得到的结果为: 对应的sql语 ...

  5. 10_java基础——构造器里调用构造器

    package com.huawei.test.java04; /** * This is Description * * @author * @date 2018/08/30 */ public c ...

  6. sqlite比较时间起始1天的0点

    当天时间的0:00:00 strftime('%Y-%m-%d %H:%M:%S','now','localtime','start of day')

  7. svcutil生成List类型不转换成数组

    svcutil http://localhost:22180/Service1.svc /out:c:\service1.cs /config:c:\config.config /ct:System. ...

  8. python学习之初识字符串

    刚接触一门语言时,字符串是很容易遇到的, 例如要从读入或者写出, 字符串与数字间的转换等. 由于字符串, 列表和元组等类型具有一定的共性(由对象组成的序列,如字符串是字符序列), 在Python中统称 ...

  9. TrustManagerService.java

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

  10. python 面试题1

    1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in file 2.迭代器和生成器的区别 1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方 ...