1 概述
ETL是EXTRACT(抽取)、TRANSFORM(转换)、LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环,也是工作量较大的一块。
Kettle是ETL中其中一个开源工具,基于纯Java开发,Kettle 是 PDI 以前的名称,PDI 的全称是
transformation:完成针对数据的基础转换
job:完成整个工作流的控制
Kettle有三个主要组件:Spoon、Kitchen、Pan
Spoon:图形化工具,用于快速设计和维护复杂的ETL工作流。windows选择Spoon.bat;Linux选择spoon.sh
Kitchen:用来执行job(作业)
Pan:用来执行transformation(转换)
2 windows 安装和使用
2.1 安装
kettle 是免安装的,只需要解压kettle pdi压缩包至本地即可。由于kettle是基于java语言的,所以要安装jdk。
2.2 启动
执行spoon.bat
2.3 转换
2.3.1 创建转换
文件 → 新建 → 转换, 进入转换页面
2.3.2 配置转换流程
在左面核心对象中,选择相应的组件拖到右面, 配置相应参数就可以实现转换操作。
注意:后面的组件要连上后能获取前面组件传过来的字段。
2.3.3 运行转换流程
点击
执行转换操作。
2.3.4 保存转换流程
点击 保存,会将当前转换流程生成 ktr配置文件,这个配置文件可用于在linux上运行。
2.4 作业
2.4.1 创建作业
文件 → 新建 → 作业, 进入作业页面
2.4.2 配置作业流程
在左面核心对象中,选择相应的组件拖到右面, 配置相应参数就可以实现流程操作。
注意:后面的组件要连上后能获取前面组件传过来的字段。
2.4.3 运行作业流程
点击
运行作业流程
2.4.4 保存作业流程
点击 保存,会将当前转换流程生成 kjb配置文件,这个配置文件可用于在linux上运行。
3 Linux操作系统
3.1 安装
ETL服务器解压kettle安装包。
cd /opt
unzip kettle.zip
chmod -R 777 /opt/kettle
用root用户修改 /etc/profile文件, 配置path,并source
3.2 运行
3.2.1 linux上用pan.sh 执行 生成的转换操作文件
1)上传kettle任务ktr配置文件到Linux操作系统
上传到linux后,需要修改配置文件中的 输入文件和输出文件 为linux系统的文件路
# 输入文件目录
/home/panniu/kettle_test/csv_input/userdata.csv
# 输出文件目录
/home/panniu/kettle_test/out1\out1.xls
/home/panniu/kettle_test/out2\out2.csv
2)用pan.sh 执行 ktr文件
执行命令
# -file:指定要运行的转换配置文件
pan.sh -file=/home/panniu/kettle_test/csv_demo.ktr -level=Detailed
执行ETL清洗任务,清洗任务可以封装在shell脚本内,通过调度系统定时调度。
3.2.2 linux上用kitchen.sh 执行 生成的作业文件
1)上传kettle任务ktr配置文件到Linux操作系统
上传到linux后,需要修改配置文件中的 输入文件和输出文件 为linux系统的文件路径。
# 输入文件目录
/home/panniu/kettle_test/csv_input/userdata.csv
# 输出文件目录
/home/panniu/kettle_test/out1\out1.xls
/home/panniu/kettle_test/out2\out2.csv
2)生成kettle任务kjb配置文件到linux操作系统
上传到linux后,需要修改配置文件中的 ktr配置文件 为linux系统的文件路径。
# ktr配置文件目录
/home/panniu/kettle_test/csv_demo.ktr
3)用kitchen.sh 执行 kjb文件
执行命令
# -file:指定要运行的作业配置文件
kitchen.sh -file=/home/omm/kettle_test/csv_demo.kjb -level=Detailed
4 目录统一参数化
如果不想用替换目录的方法,可以用参数统一化。
在运行转换或作业时,kettle会自动将转换脚本和作业脚本的目录作为参数目录。
那这样输入、输出目录就可以参数化
比如:
这样,只要将windows和linux目录规划好,在linux运行时就可以不修改目录了,kettle会自动将 转换脚本和作业脚本所在的目录作为参数目录。
在作业配置中, 可以对转换文件路径参数化,还可以给转换加日志,方便查看日志