kettle基础概念的学习
参考书籍:Pentaho Kettle Solutions中文版。由于最近不断的使用kettle,随着不断深入使用,遇到的问题越来越多,发现脑子那点货根本不够用,所以根据阅读把一些概念记录一下,方便自己观看,也希望读看到帖子的有所帮助。
1、转换。Kettle在运行转换的时候,根据用户的设置,可以将数据以不同的方式发送到多个数据流中。
注意:有两种基本发送方式,即分发和复制,分发类似于发扑克牌,以轮流的方式将每行数据只发给一个数据流。复制是将一行数据发给所有数据流。
2、转换。转换以并行的方式执行,就需要一个可以串行执行的作业来处理这些操作(作业以串行执行)。
3、转换。是ETL解决方法中最主要的部分,它处理抽取,转换,加载各阶段各种对数据行的操作。转换包括一个或者多个步骤(step),如读取文件,过滤输出行,数据清洗或者将数据加载到数据库。转换里面的步骤通过跳(hop)来连接,跳定义了一个单向通道,允许数据从一个步骤向另一个步骤流动。在Kettle里面,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动。数据流的另一个同义词就是记录流。注意,转换里面还可以包含注释,注释一个小的文本框,可以放在转换流图的任何位置。注释的主要目的是使转换文档化,方便自己以后熟悉和学习。
4、转换。转换的注意点,步骤是转换里面的基本组成部分,它以图标的方式图形化的展示。一个步骤有如下几个关键特性。步骤需要有一个名字,且这个名字在转换范围里唯一。步骤将数据写到与之相连的一个或者多个输出跳(outgoing hops),再传送到跳的另一端的步骤。对另一端步骤来说这个跳就是一个输入跳(incoming hops),步骤通过输入跳接受数据。大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被设置为轮流发送和复制发送。轮流发送是将数据行依次发给每一个输出跳(这种方式也称为round robin),复制发送是将全部数据行发送给所有输出跳。在运行转换的时候,一个线程运行一个步骤和步骤的多份拷贝,所有的步骤的线程几乎同时运行,数据行连续的流过步骤之前的跳。
5、转换的跳。跳(hop)就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路。跳实际上是两个步骤之间的被成为行集(row set)的数据行缓存(行集的大小可以在转换的设置里面定义)。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。当行集空了,从行集读取数据的步骤停止读取,直到行集里面又有了可读的数据行。注意,当创建新跳的时候,需要记住跳在转换里面不能循环。因为在转换里面每个步骤都依赖前一个步骤获取字段值。
6、转换的并行。跳的这种基于行集缓存的规则允许每个步骤都由一个独立的线程运行,这样并发程度最高。这一规则也运行数据以最小消耗内存的数据流的方式来处理。在数据仓库里面,我们经常要处理大量数据,所以这种并发低耗内存的方式也是ETL工具的核心需求。对于kettle,不可能定义一个执行顺序,不可能也没有必要确定一个起点和终点。因为所有步骤都以并发方式执行。当转换启动后,所有步骤都同时启动,从他们的输入跳中读取数据,并把处理过的数据都写到输出跳,直到输入跳里面不再有数据,就中止步骤的运行。当所有的步骤都中止了,整个转换就中止了,也就是说,从功能的角度来看,转换也有明确的起点和终点。注意,转换里面的步骤几乎是同时启动的,所有如果想要一个任务沿着指定的顺序执行,那么就要使用作业(job)了。
7、转换的设计。当设计转换的时候有几个数据类型的规则需要注意。行级里所有行都应该有同样的数据结构。就是说,当从多个步骤向一个步骤里面写数据的时候,多个步骤输出的数据行应该有相同的结构,即字段相同,字段数据类型相同,字段顺序相同。字段元数据不会在转换中发生变化。意思就是说,字符串不会自动截取长度以适应指定的长度,浮点数也不会自动取整以适应指定的精度。这些功能必须通过一些指定的步骤来完成。默认情况下,空字符串"",被认为与NULL相同。
8、作业(job)。作业按照一定的顺序完成,因为转换以并行方式执行的,就需要一个可以串行执行的作业来处理一系列按照顺序完成的操作。一个作业包括一个或者多个作业项,这些作业项以某种顺序来执行。作业执行顺序由作业项之间的跳(job hop)和每个作业项的执行结构来决定。如同转换,作业里面也可以包括注释。
9、作业项。作业项是作业的基本构成部分。如同转换的步骤,作业项也可以使用图标的方式图形化展示。作业项的注意点。新步骤的名字应该是唯一的,但是作业项可以有影子拷贝。这样可以把一个作业项放在不同的位置。这些影子拷贝里的信息都是相同的,编辑一份拷贝,其他拷贝也会随之修改。在作业项之间可以传递一个结果对象(result object)。这个结果对象里包含了数据行,它们不是以流的方式来传递的。而是等一个作业项执行完了,再传递给下一个作业项。默认情况下,所有的作业项都是以串行方式执行的,只是在特殊情况下,以并行方式执行。
10、kettle启动脚本介绍(window版本)。
Spoon.bat,集成开发环境。提供了一个图形化用户界面,用于创建或者编辑作业或者转换。Spoon也可以用于执行或者调试作业或者转换,它也有性能监控的功能。
Kitchen.bat,作业的命令行运行程序,可以通过Sheel脚本来调用。Scheel脚本一般通过调度程序,如cron或者Windwos计划任务,来调度执行。
Pan.bat,转换的命令运行程序,和Kitchen一样通过Sheel脚本来调用。执行转换而不是作业。
Carte.bat,轻量级的Http服务器(基于Jetty),后台运行,监听Http请求来运行一个作业。Carte用于分布式和协调跨机器执行作业,也就是Kettle的集群。
待续......
kettle基础概念的学习的更多相关文章
- Vue基础概念,学习环境等
前提: 你已有 HTML.CSS 和 JavaScript 中级前端知识. 概念: Vue.js(读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vu ...
- Json学习一(基础概念知识学习)
1.Json简单介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们非常easy的进行阅读和编写. 同一时候也方便了机器进行解析和生成.它是基 ...
- 【强化学习RL】必须知道的基础概念和MDP
本系列强化学习内容来源自对David Silver课程的学习 课程链接http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html 之前接触过RL ...
- Elasticserach学习笔记-01基础概念
本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/e ...
- 分布式强化学习基础概念(Distributional RL )
分布式强化学习基础概念(Distributional RL) from: https://mtomassoli.github.io/2017/12/08/distributional_rl/ 1. Q ...
- 【转】Pro Android学习笔记(二):开发环境:基础概念、连接真实设备、生命周期
在Android学习笔记(二):安装环境中已经有相应的内容.看看何为新.这是在source网站上的Android架构图,和标准图没有区别,只是这张图颜色好看多了,录之.本笔记主要讲述Android开发 ...
- C#学习基础概念二十五问
C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...
- 『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)
0.前言 深度学习用的有一年多了,最近开始NLP自然处理方面的研发.刚好趁着这个机会写一系列NLP机器翻译深度学习实战课程. 本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署,将包括以下内 ...
- Kubernetes 学习笔记(一):基础概念
个人笔记,仅本人查阅使用,不保证正确. 零.微服务 微服务架构专注于应用解耦合,通过将应用彻底地组件化和服务化,每个微服务只包含一个非常小的功能,比如权限管理.日志收集等等.由这一组微服务组合起来,提 ...
随机推荐
- 快速理解js中的call,apply的作用
今天被人问到js中的call,apply的区别和用途,解释了一番后,想到之前在逼乎上看到一位小伙伴生动形象的解释 本身不难理解,看下MDN就知道了,但是不常用,遇到了,还要脑回路回转下.或者时间长了, ...
- 第二篇--上传git 代码
准备工作: 首先,注册一个GitHub账号. 接着,新建一个仓库. 最后,下载Git 上传代码步骤: 第一步,新建一个本地文件夹作为本地仓库,进入该文件夹. 右击选择Git Bash Here ,输入 ...
- 第六周博客作业<西北师范大学|李晓婷>
1.助教博客链接:https://home.cnblogs.com/u/lxt-/ 2.作业要求链接:https://www.cnblogs.com/nwnu-daizh/p/10569690.htm ...
- Redies安装,修配置,设置密码,
Redies下载路径:https://github.com/MicrosoftArchive/redis/releases 我下的是Redis-x64-3.2.100.msi 下载后安装,一步一步操作 ...
- PHP和JS在循环、条件判断中的不同之处
一.条件判断: php中算 false 的情况 1. boolean:false 2. 整形:0 3.浮点型:0 4.字符串:"" "0"(其他都对) 5.空 ...
- ccf 201503-5 最小花费 这题交上去只有10分嗨!求大佬的题解啊
问题描述 C国共有n个城市.有n-1条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达.小R来到C国旅行,他共规划了m条旅行的路线,第i条旅行路线的起点是si,终点是ti.在旅行过程中,小R ...
- shell 脚本实现定时备份mysql数据库
首先要知道直接在脚本中输入mysql的密码是不被允许的,但是我们可以曲线救国 1. 在新建一个文件专门用来存储用户密码 如: vim ./.mysql.conf [mysqldump] user=yo ...
- Android Studio安装后配置默认新工程目录以及.gradle,.android,.m2和system,config目录
关于在哪里设置:以下所有设置都是在没有打开工程的前提下设置的, Configure > Settings 如图: 不要使用 Configure > Project Defaults> ...
- Selenium for C#(一) 环境安装
Selenium 环境安装 本地环境为VS2015,由于selenium 官网不知什么原因打不开. 特记录下VS上使用NuGet安装Selenium的步骤. 利用Package Manager Con ...
- Python 高级特性之:生成器(generator)和迭代器(Iterator)
前言: 之前学习Python自动化,接触了不少python的学习,对生成器印象尤其深,网上也看了很多介绍,下面主要是这些概念的个人学习整理(如侵删). 正文: 如要创建一个非常大的列表,受到内存限制, ...