Kettle安装使用手册
目录
1 KETTLE 介绍 5
1.1. 核心组件 5
1.2. 组成部分 5
1.3. 概念模型 6
1.3.1. Transformation(转换) 6
1.3.2. Steps(步骤) 7
1.3.3. Hops(节点连接) 7
1.3.4. Jobs(工作) 7
1.3.5. Variable(变量) 8
1.4. 查看版本 9
1.5. 选项设置 10
2 安装说明 11
2.1 WINDOWS 11
2.2 LINUX 12
3 基于KETTLE开发ETL 13
3.1 开发流程 13
3.1.1 新建转换 14
3.1.2 转换实例 18
3.1.3 新建作业 18
3.2 应用DEMO 20
3.2.1 数据库数据导入到另一个数据库中 20
4 部署至LINUX服务器 24
4.1 DIM上新建作业并上传至LINUX服务器 24
4.2 DIM上运行作业 24
附录:KETTLE设计组件 25
1.6. TRANSFORMATION:转换步骤(24-228) 25
1.6.1. Input:输入(38) 25
1.6.2. Output:输出(22) 47
1.6.3. Transform:转换(26) 61
1.6.4. Utility(15) 81
1.6.5. Flow(16) 84
1.6.6. Scripting(9) 90
1.6.7. BA Server(3) 102
1.6.8. Lookup(15) 102
1.6.9. Joins(6) 109
1.6.10. Data Warehouse(2) 112
1.6.11. Validation(4) 113
1.6.12. !Statistics:统计(7) 113
1.6.13. Big Data(13) 114
1.6.14. Agile(2) 115
1.6.15. Cryptography(4) 115
1.6.16. Palo(4) 115
1.6.17. Open ERP(3) 115
1.6.18. Job:作业(6) 116
1.6.19. !Mapping(4) 120
1.6.20. Bulk loading(11) 121
1.6.21. Inline(3) 122
1.6.22. Experimental(2) 124
1.6.23. Deprecated(4) 124
1.6.24. History(9) 124
1.7. JOB:作业步骤(15-92) 125
1.7.1. General:通用(6) 125
1.7.2. Mail:邮件(3) 130
1.7.3. File management(19) 134
1.7.4. Conditions(12) 150
1.7.5. Scripting(3) 159
1.7.6. Bulk loading(3) 166
1.7.7. Big Data(10) 166
1.7.8. Modeling(2) 166
1.7.9. XML(4) 167
1.7.10. Utility(13) 167
1.7.11. Reposotory(2) 169
1.7.12. File transfer(8) 169
1.7.13. File encryption(3) 177
1.7.14. Palo(2) 177
1.7.15. Deprecated(2) 177
1 kettle 介绍
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、加载的过程),对于数据支撑来说,经常会遇到大数据量的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少。
Kettle是一款开源的etl工具,纯java编写,绿色无需安装,数据抽取高效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
1.1. 核心组件
Spoon是构建ETL Jobs和Transformations的工具。Spoon可以以拖拽的方式图形化设计,能够通过spoon调用专用的数据集成引擎或者集群。Data Integration Server是一个专用的ETL Server,它的主要功能有:
功能 描述
执行 通过Pentaho Data Integration引擎执行ETL的作业或转换
安全性 管理用户、角色或集成的安全性
内容管理 提供一个集中的资源库,用来管理ETL的作业和转换。资源库包含所有内容和特征的历史版本。
时序安排 在spoon设计者环境中提供管理Data Integration Server上的活动的时序和监控的服务
1.2. 组成部分
名称 描述
Spoon 通过图形接口,用于编辑作业和转换的桌面应用。
Pan 一个独立的命令行程序,用于执行由Spoon编辑的转换。
Kitchen 一个独立的命令行程序,用于执行由Spoon编辑的作业。
Carte Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server。
1.3. 概念模型
要了解Kettle的执行分为两个层次:Job和Transformation。两个层次的最主要区别在于数据传递和运行方式。
1.3.1. Transformation(转换)
Transformation(转换)是由一系列被称之为step(步骤)的逻辑工作的网络。转换本质上是数据流。下图是一个转换的例子,这个转换从文本文件中读取数据,过滤,然后排序,最后将数据加载到数据库。本质上,转换是一组图形化的数据转换配置的逻辑结构。
转换的两个相关的主要组成部分是step(步骤)和hops(节点连接)。转换文件的扩展名是.ktr。
1.3.2. Steps(步骤)
Steps(步骤)是转换的建筑模块,比如一个文本文件输入或者一个表输出就是一个步骤。在PDI中有140多个步骤,它们按不同功能进行分类,比如输入类、输出类、脚本类等。每个步骤用于完成某种特定的功能,通过配置一系列的步骤就可以完成你所需要完成的任务。
1.3.3. Hops(节点连接)
Hops(节点连接)是数据的通道,用于连接两个步骤,使得元数据从一个步骤传递到另一个步骤。在上图所示的转换中,它像似顺序执行发生的,但事实并非如此。节点连接决定了贯穿在步骤之间的数据流,步骤之间的顺序不是转换执行的顺序。当执行一个转换时,每个步骤都以自己的线程启动,并不断的接受和推送数据。
注意:所以(有)的步骤是同步开启和运行的,所以步骤的初始化的顺序是不可知的。因为(此)我们不能在第一个步骤中设置一个变量,然后在接下来的步骤中使用它。
在一个转换中,一个步骤可以有多个连接,数据流可以从一个步骤流到多个步骤。在Spoon中,hops就想是箭,它不仅允许数据从一个步骤流向另一个步骤,也决定了数据流的方向和所经步骤。如果一个步骤的数据输出到了多个步骤,那么数据既可以是复制的,也可以是分发的。
1.3.4. Jobs(工作)
Jobs(工作)是基于工作流模型的,协调数据源、执行过程和相关依赖性的ETL活动。Jobs(工作)将功能性和实体过程聚合在了一起。下图是一个工作的例子。
一个工作中展示的任务有从FTP获取文件、核查一个必须存在的数据库表是否存在、执行一个转换、发送邮件通知一个转换中的错误等。最终工作的结果可能是数据仓库的更新等。工作由工作节点连接、工作实体和工作设置组成。工作文件的扩展名是.kjb。
1.3.5. Variable(变量)
根据变量的作用域,变量被分为两类:环境变量和kettle变量。
1.3.5.1. 设置环境变量
环境变量可以通过edit menu下面的set environment variables对话框进行设置。使用环境变量的唯一的问题是,它不能被动态的使用。如果在同一个应用服务器中执行两个或多个使用同一环境变量的转换,将可能发生冲突。环境变量在所以使用jvm的应用中可见。
1.3.5.2. 设置变量
Kettle变量用于在一个小的动态范围内存储少量的信息。Kettle变量是kettle本地的,作用范围可以是一个工作或转换,在工作或转换中可以设置或修改。Set variable步骤用来设置与此变量有关的工作从此设置其作用域,如:父工作、祖父工作或根工作。
1.4. 查看版本
1.5. 选项设置
2 安装说明
kettle是java开发的只要准备好java环境解压缩后即可运行,只是需要注意的是连接数据库需要数据库驱动,需要将数据库驱动的jar包放到data-integration/lib文件夹下。
2.1 windows
-
配置jdk,设置KETTLE_HOME环境变量
-
将kettle的压缩包文件夹拷贝到本地路径,例如D 盘根目录,解压缩即可。
2.2 linux
解压kettle安装包到当前目录
[root@localhost /]# cd /opt //进入kettle安装包所在目录
[root@localhost opt]# ls //查看kettle安装包是否存在于该目录下
data-integration.zip
[root@localhost opt]# unzip data-integration.zip //解压安装包 -
配置KETTLE_HOME环境变量
编辑/etc文件夹下的profile文件,配置环境变量
[root@localhost opt]# vi /etc/profile //打开profile文件
键盘输入i进入编辑状态,增加下面的配置内容:
export KETTLE_HOME=/opt/data-integration
修改完毕后,敲击键盘左上角Esc键,输入:wq保存并退出编辑状态。
- 为kettle软件的可执行程序增加执行权限:
chmod +x /opt/data-integration/*sh
3 基于kettle开发etl
kettle的开发环境是一种图形界面,基于此工具的etl过程都是在kettle的图形界面上完成的。
3.1 开发流程
由于基于kettle的etl流程是图形界面编程。所以本文所讲使用手册都是基于windows环境。双击运行data-integration文件夹下的spoon.bat文件。出现kettle应用界面,界面显示kettle版本信息
注意:kettle 版本兼容性比较差,在本地开发kettle转换或者作业时必须与服务器运行环境的kettle版本保持一致。
3.1.1 新建转换
3.1.1.3方法
创建transformation
点击菜单栏的文件->新建->转换,即创建了一个新的transformation,点击保存到本地路 径,例如保存到D:/etltest下,保存文件名为EtltestTrans,kettle默transformation 文件保存后后缀名为ktr
3.1.1.4主对象树
3.1.1.5核心对象
3.1.1.6新建数据库连接
连接名称:自命名还接名称
连接类型:选择需要还接的数据库
连接方式:选择连接的方式
主机名称:写入数据库服务器的ip地址
数据库名称:写入数据库名
端口号:写入连接数据库的端口号
用户名:写入连接数据库用户名
密码:写入连接数据库密码
例如:
点击【测试】,如果出现如下提示则说明配置成功
3.1.2 转换实例
3.1.2.1数据库数据导入到另一个数据库中
操作过程:
-
创建一个transformation,命名为kettle_trans_channel_log.ktr,在主对象树里面右击【DB连接】,创建数据库连接33
-
点击核心对象里面的【输入】,选中【表输入】,拖到主窗口,释放鼠标
-
点击核心对象里面的【输出】,选中【表输出】,拖到主窗口,释放鼠标
-
同时按Ctrl+shift键,将表输入和表输出用线连起来
如下图所示: -
双击【表输入】在sql框里输入要获取数据的sql语句,选择好源数据的数据库连接
-
双击【表输出】,选择好目标数据的数据库连接,目标表中写入kettle_trans_channel_log,点击数据库字段,点击【输入字段映射】,添加源表字段和目标表字段的映射关系,完成后,点击确定保存。如下图:
-
本地图形化界面运行测试,确认无报错日志信息后,开发完毕
3.1.3 新建作业
3.1.3.3方法
创建job
点击菜单栏的文件->新建->作业,创建一个新的job,点击保存到本地路径,例如保 存到D:/etltest下,保存文件名为EtltestJob,kettle默认job文件保存后后缀名为kjb
3.1.3.4主对象树
3.1.3.5核心对象
3.2 应用Demo
请参看脚本案例/db-db、脚本案例/ftp-excel-db,分别是对接数据库、对接FTP服务器、对接Excel文件的脚本。
其中需要注意一下几点:
(1) 需要配置参数,否则平台无法传入WORK_TIME参数
具体操作方法:
在kettle图形化界面上的空白区域右击,选择“转换设置”,在弹出框中选择转“命名参数”Tab页
输入WORK_TIME,该参数名需与DIM平台保持一致
(2) 需要配置日志,否则无法统计交换的数据量
具体操作方法:
在kettle图形化界面上的空白区域右击,选择“转换设置”,在弹出框中选择转“日志”Tab页
选择左侧“转换”,配置日志数据库和日志表,数据库为DIM平台数据库,表名为“kettle_trans_log”
选择左侧“步骤”,配置日志数据库和日志表,数据库为DIM平台数据库,表名为“kettle_trans_step_log”
(3) 增量交换周期需要在脚本中控制
提供的脚本案例中CRAWL_DATEAVERAGE_WASTEGAS_INC.ktr,是增量日交换,采用以下查询语句获取WORK_TIME的前一天的数据。
(4) 数据源的连接信息采用参数化配置
如下图所示,爬虫数据库并未配置实际的连接信息,而是配的参数名,具体参数对应的值在kettle.properties中配置,如何配置请参见《DIM软件安装部署手册.docx》
3.2.1 结合DIM平台的脚本案例
4 部署至Linux服务器
4.1 DIM上新建作业并上传至linux服务器
4.2 DIM上运行作业
附录:Kettle设计组件
1.6. Transformation:转换步骤(24-228)
1.6.1. Input:输入(38)
1.6.1.1. Csv file input
读取csv文件,设置csv文件路径,可以设置csv文件的相对路径或者绝对路径,字段分隔符,文件读取的缓存大小等
1.6.1.1.1. 功能描述
这个步骤从CSV文件输入数据。
1.6.1.1.2. 操作步骤
功能1:指定选项
选项 描述
文件名 CSV文件名。
分割符 文件中使用的分割符。
#附件 只将符号内的字符串输入。
NIO的缓冲区大小 定义缓冲区大小。
延迟转换 是否延迟转换。
标题行存在 是否去掉标题行。
添加文件名到结果 是否在结果中输出文件名。
行号字段 行号字段命名。
并行运行 指定并行属性。
文件编码 选择字符集编码。
1.6.1.1.3. 实例讲解
1.6.1.2. De-serialize from file:文件反序列化
(原来名称为Cube Input),从二进制kettle cube文件中读取记录
备注:这个步骤仅仅用来存储短期数据。不同版本之间不保证文件的格式一样。
1.6.1.3. Fixed file input
读取固定大小文件
1.6.1.4. Generate Rows
生成一些固定字段的记录,主要用来模拟一些数据进行测试。
1.6.1.5. Get File Names
读取给定目录或者文件全路径的文件名
1.6.1.6. Get Files Rows Count
获取文件内容的行数
1.6.1.7. Get System Info:获取系统信息
包括命令行输入的参数,操作系统时间,ip地址,一些特殊属性,kettle版本等
1.6.1.7.1. 功能描述
这个步骤从当前服务器环境中获取信息,例如获取服务器时间、IP地址、主机名等,将信息输送到下一步骤。
选项 描述
System date(variable) 系统时间,每次访问的时候都在改变
System date(fixed) 系统时间,由转换开始来决定
start date range(Transformation) 根据ETL日志表的信息,确定日期范围的开始
End date rang(Transformation) 根据ETL日志表的信息,确定日期范围的结束
Start date range(job) 根据ETL日志表的信息,确定日期范围的开始
End date range(job) 根据ETL日志表的信息,确定日期范围的结束
Yesterday 00:00:00 昨天的开始
Yesterday 23:59:59 昨天的结束
Tomorrow 00:00:00 今天的开始
Tomorrow 23:59:59 今天的结束
First day of last month 00:00:00 上个月的开始
Last day of last month 23:59:59 上个月的结束
First day of this month 00:00:00 这个月的开始
Last day of this month 23:59:59 这个月的结束
Copy of step 复制步骤
Transformation name 转换的名称
Transformation file name 转换的文件名(仅仅针对XML)
User that modified the transformation last
Date when the transformation was modified last
Transformation batch ID 日志表中的批处理ID值
Hostname 返回服务器的主机名
IP address Returns the IP address of the server
Command line argument1 命令行的第1个参数
Command line argument2 命令行的第2个参数
Command line argument3 命令行的第3个参数
Command line argument4 命令行的第4个参数
Command line argument5 命令行的第5个参数
Command line argument6 命令行的第6个参数
Command line argument7 命令行的第7个参数
Command line argument8 命令行的第8个参数
Command line argument9 命令行的第9个参数
Command line argument10 命令行的第10个参数
Kettle version 返回Kettle的版本
Kettle Build version 返回Kettle核心库的编译版本
Kettle Build Date 返回Kettle核心库的编译日期
1.6.1.7.2. 操作步骤
功能1:指定选项
选项 描述
步骤名称 步骤的名称,在单个转换中必须唯一。
字段 输出的字段。
示例:
1.6.1.7.3. 实例讲解
第一个用法就是简单的从系统中获取信息。
从2.3.0版本开始,这个步骤也接受输入行。选择的值将附加到输入流的行中。
1.6.1.8. Get data from XML
从xml文件解析出数据
1.6.1.9. LDAP Input
从ldap库读取数据。
1.6.1.10. LDIF Input
读取ldap的ldif文件
1.6.1.11. Microsoft Access input
读取access数据库
1.6.1.12. Microsoft Excel Input
读取excel文件,和csv文件读取类似,增加了表单,表头,出错(是否忽略错误,严格的类型判断等)的处理
1.6.1.12.1. 功能描述
这个步骤从EXCEL文件输入数据。
1.6.1.12.2. 操作步骤及图解
双击Excel输入弹出如下图:
文件:
点击浏览按钮选择excel 文件,点击增加按钮文件增加到选中的文件列表。
从前面的步骤获取文件名:当有数据流连接当前Excel 输入时,选中,则可以选择文件。
点击获取工作表名称会弹出框,将可用选项选到你的选择,点击确认即可。
点击内容
选项 描述
头部 检查是否工作表指定了一个头部行。
非空记录 检查是否不需要空行输出。
停在空记录 当步骤在读取工作表遇到一个空行的时候停止读取。
限制 限制输出的行数,0 代表输出所有行。
1.6.1.12.2.1. 字段
重要提示:类型选项要严格与Excel 文件中对应字段的类型匹配,否则会报错。
1.6.1.12.2.2. 错误处理
参考 3.1 文本文件输入
1.6.1.12.2.3. 其他输出字段
1.6.1.13. Mondrian Input
MDX语言从Mondrian服务器上读取数据
1.6.1.14. Property Input
读取属性.properties文件
1.6.1.15. Table input:表输入
1.6.1.15.1. 功能描述
从数据库读数据,动态绑定参数的SQL语句,参数替换可以从上一个步骤从获取。例如SELECT *FROM customerWHERE birthdate<’ c u r r e n t d a t e ’这里的 {current_date}’这里的 currentdate’这里的{current_date}在执行过程中会作为动态参数被替换掉。这个值是前一个转换步骤设置的。
注:但是测试过程中发现如果上一个步骤设置的变量,在table input里面获取不到,变量设置必须作为一个单独的转换先执行一次,然后才能获取到这个变量。
这一步常常用来利用连接和SQL,从数据库中读取信息。自动生成基本的SQL 语句。
1.6.1.15.2. 操作步骤
指定选项
选项 描述
步骤名称 步骤的名称,在单一的步骤中,名称必需唯一。
连接 读取数据的数据库连接。
SQL SQL 语句用来从数据库连接中读取数据。
从步骤插入数据 指定我们期待读取数据的步骤名称。这些信息能被插入到SQL 语句。
限制 设置从数据库中读取的行数。0 所有行。
示例:指定如下SQL语句: 注:日期可以从“获取系统信息”步骤类型中获取。
1.6.1.15.3. 实例