最近公司在做数据总线的工作,需要用kettle这个ETL工具,所以花了一些时间来研究研究,喜欢的话点个赞
一、何为kettle
1.ETL(数据仓库技术)
英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS、Beeload、Kettle等等
有两种架构,一种是ETL架构(简单来说,是将数据从数据源头拿过来,在中间直接通过处理(这里需要等待处理完成,处理时间可能比较长),之后再放到目标数据仓库,然后才能用)
另一种是ELT架构(简单来说,是将数据直接从数据源头拿过来,然后传到目标数据仓库,而处理则发生在拿的时候,或者最后放的时候,这样一来可以很快的处理,不需要等待,可以在查询的时候处理)
今天我们讲的是ETL工具中最受欢迎的一个工具——keettle
2.kettle
一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。
中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle家族目前包括4个产品:Spoon、Pan、CHEF、Kitchen。
SPOON 允许你通过图形界面来设计ETL转换过程(Transformation)。
PAN 允许你批量运行由Spoon设计的ETL转换 (例如使用一个时间调度器)。Pan是一个后台执行的程序,没有图形界面。
CHEF 允许你创建任务(Job)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换,任务,脚本等等。任务将会被检查,看看是否正确地运行了。
KITCHEN 允许你批量使用由Chef设计的任务 (例如使用一个时间调度器)。KITCHEN也是一个后台运行的程序。
二、如何运行kettle
1.包
要运行Kettle ,必须按安装java 环境1.4或以上版本,kettle下载可以到: http://kettle.pentaho.org 取得最新版本。(pdi-ce-7.0.0.0-25)
2.运行过程
(对应自己的系统,运行相应的文件即可,因为kettle是纯java,无需安装滴)
下面是不同平台上运行spoon 所支持的脚本 :
spoon.bat windows 平台运行Spoon
Spoon.sh linux 平台运行Spoon
这是我的版本
双击spoon.bat,运行完成后的界面
Kettle中,主要有2中任务,一个是作业,一个是转换。一般来说,转换是一系列具体的操作,比如:调度SP,导出Excel等等;作业的话,就是按照一定流程来调度一系列转换
三、简单应用
这里只举一个最简单的应用例子——连接数据库,并将数据库中的数据导出为execl表格
1.主对象树—转换
右键—“新建”
2.选择 DB连接—右键“新建”
3.然后选择相应的数据源,填写相应信息
mysql包 链接:http://pan.baidu.com/s/1hrX0qPm 密码:a40p
sqlserver包 链接:http://pan.baidu.com/s/1skCjnjR 密码:1uzy
将自己下载好的jar包复制到kattle文件夹的lib文件夹中即可
`
4.填写好之后“测试”一下,同时也可以预览一下
5.之后就建好了DB连接
6.接着“核心对象”——“输入”
“表输入”,直接拖到右边的框中
7.双击“表输入”图标可以对其进行编辑
这里进行修改,写sql语句
点击预览
观察效果
8.“输出”——“Execl输出”,也是直接拖拽
9.编辑Execl输出,文件名,字段(获取字段这时是不能获取滴)
10.需要进行连接,需要将2个控件,连起来,源头有了,目标也有了,得让他们关联起来啊,再Kettle中,这个连线叫做Hop(跳),就像一个管道一样,将数据流从一个点,指向另一个点
直接点击图标下的连接图标,然后拖到目的图标即可
(如何已经编辑好输入和输出,直接点击运行按钮就开始数据的转换和输入输出啦,但是这里还没有编辑好,所以继续往下看)
然后再编辑Execl输出,再获取字段,就可以从源头获取表中的字段了,当然,我们可以只导出,我们需要的字段
11.最后再点击左上角的运行按钮
因为我之前运行过,同时也正在使用输出的Execl文件,所以这里出现了运行错误
重新删除文件之后再运行一下,成功时输入输出的图标也会打绿色钩
到保存地址打开相应的execl如下:
简单的kettle从数据库获取数据,输出到execl文件的例子就完成了