Kettle安装及基本介绍(开山篇:用前必看)
一、何为ETL?
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
1. 抽取(Extract)
将数据从各种原始的业务系统中读取出来,以便为随后的步骤提供数据。
2. 转换(Transform)
任何对数据的处理过程都是转换。这些处理过程通常包括(但不限于)下面一些操作:
(1) 数据清洗(过滤不完整的数据、错误的数据、重复的数据)
(2) 根据规则验证数据
(3) 根据处理后的数据计算派生值和聚集值
3. 加载(Load)
将数据加载到目标系统的所有操作。
二、kettle简单介绍
kettle 是纯 java 开发,开源的 ETL工具,用于不同数据源之间的数据迁移 。可以在Linux、windows、unix 中运行。有图形界面,也有命令脚本还可以二次开发。
kettle 官网:https://community.hitachivantara.com/docs/DOC-1009855
github 地址:https://github.com/pentaho/pentaho-kettle
三、下载、安装
此处以 windows 下的配置为例,linux 下配置类似。
1. 下载 kettle
从官网下载 kettle ,解压到本地即可(亲测不翻墙的话下载速度时快时慢,所以建议大家在下载的时候尽量翻墙)。
直接访问上面官网地址,下拉找到下载链接,就可进行下载。
如果不想翻墙 可以使用 mirrorservice 的镜像服务, 下面是 kettle 下载路径,本人就是采用这种方式下载,下载版本是pdi-ce-8.2.0.0-342.zip
http://sourceforge.mirrorservice.org/p/pe/pentaho/
2. jdk 安装及配置环境变量
由于 kettle 是基于 java 的,因此需要安装 java 环境,并配置 JAVA_HOME 环境变量。建议安装 JDK1.8 及以上,7.0以后版本的 kettle 不支持低版本 JDK。
3. 下载相应的数据库驱动
由于 kettle 需要连接数据库,因此需要下载对应的数据库驱动。
例如 MySQL 数据库需要下载 mysql-connector-java.jar,oracle 数据库需要下载ojdbc.jar。下载完成后,将 jar 放入 kettle 解压后路径的 lib 文件夹中即可。
注意:本文基于 pdi-ce-8.2.0.0-342 版本进行介绍,低版本可能有区别。
四、基本用法
1. Kettle 子程序的功能和启动方式
打开kettle安装路径:\data-integration\
Spoon.bat: 图形界面方式启动作业和转换设计器。 Pan.bat: 命令行方式执行转换。 Kitchen.bat: 命令行方式执行作业。 Carte.bat: 启动web服务,用于 Kettle 的远程运行或集群运行。 Encr.bat: 密码加密 |
2. 转换和作业概念介绍
Kettle 的 Spoon 设计器用来设计转换(Transformation)和 作业(Job)。转换主要是针对数据的各种处理,一个转换里可以包含多个步骤(Step)。作业是比转换更高一级的处理流程,一个作业里包括一个或者多个作业项(Job Entry),一个作业项代表了一项工作,转换也是一个作业项。
3. 操作界面如下
4. 输入步骤简介
输入类步骤用来从外部获取数据,可以获取数据的数据源包括:文件类(txt,csv,xml,json,excel)、数据库、 非关系型数据库、服务、自定义的数据等。
输入内容部分截图如下:
5. 转换步骤简介
转换类步骤是对数据进行各种形式转换所用到的步骤。
例子:
- 字段选择 (选择需要的字段,剔除不需要的字段)
- 计算器(对数值字段进行计算)
- 增加常量
6. 输出步骤简介
输出步骤是输出数据的步骤,常见的输出包括文件类输出、表输出等,也可以根据应用的需求开发插件以其他形式输出。
7. 保存
用户通过 Spoon 创建的转换、作业、数据库连接等可以保存在资源库和 XML 文件中。转换文件以 ktr 为扩展名,作业文件以 kjb 为扩展名
五、总结
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
至此介绍结束,如果大家还想深入学习,可以扫描下图关注本人公众号,本人将在上面分享更多关于kettle的学习资料。