免费开源ETL工具KETTLE

1.ETL概念

ETL:Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
Kettle (正式名:Pentaho Data Integration)是一款基于JAVA开发的开源ETL工具,有易于入手的图形界面,图形化的GUI设计界面,然后可以以工作流的形式流转,熟练它可以减少非常多的研发工作量,提高工作效率。是除了商业版的DataStage之外最好的工具
Kettle 允许你管理来自不同来源的数据,包括不同数据库、excel/csv等文件、邮件、网站源码抓取等等,除数据的抽取转换,还支持文件操作、收发邮件、通过提供一个图形化的界面来创建、设计转换(Trans)和工作流(Jobs)任务。

Kettle中有两种脚本文件,transformationjob.

  • Transformation(转换) 完成针对数据的基础转换,下文缩写为Trans
  • Job(作业) 则完成整个工作流的控制。作业则是一系列转换的集合,实现了较为复杂的逻辑。

Kettle家族:Spoon、Pan、Kitchen。

  • Spoon 图形界面:设计 ETL 转换过程(Transformation)和工作流(Jobs)。
  • Pan 后台批处理:允许你批量运行由 Spoon 设计的 ETL 转换 (Trans)。。
  • Kitchen 后台批处理:允许你批量运行由 Spoon 设计的 ETL工作流 (Jobs)

2.安装使用

安装 :Kettle学习系列之kettle的下载、安装和初步使用(windows平台下)
使用: Kettle入门教程

3. 实战使用

3.1新建一个Trans(转换)

转换是Kettle最基本的任务,定义了数据如何转换。新建转换的快捷键是ctrl-N, 界面左侧是对象区,这里可以选择各种组件用于完成一次转换,右侧是工作区,只需要将组件拖拽到右侧即可。
本次只会演示MySQL到文本的转换,因此只需要输入-表输入转换-字段选择输出-文本文件输出这三个组件即可完成工作。
在这里插入图片描述
选择一个组件,按住shift,将鼠标拖拽到目标组件即可完成指向。
每个组件都需要设置,双击该组件就能打开编辑对话框

  • 编辑表输入
    在这里插入图片描述
  • 编辑字段选择
    使用字段选择可以让表输入和表输出解耦合
    在这里插入图片描述
  • 编辑文本输出
    -
  • 执行转换
    在这里插入图片描述

3.2新建一个job作业

作业是一个逻辑集合,里面包含了转换和其他的一些组件
在这里插入图片描述

3.3抽取变量

任何转换,作业都要拿到现场去执行,但是刚才的操作中很多时候写的是具体的IP,路径等等,这些在不同的现场环境下是不同的,如果能抽取出来,则是最好的选择。

只需要把这些参数写在Kettle的配置文件(kettle.properties)下面就可以,在Windows下,这个文件存在于用户目录的.kettle文件夹下,在Linux系统下,这个文件在用户的home目录下的.kettle目录下。
在这里插入图片描述

3.4数据库连接共享

之前的步骤中会新建数据库连接,但是这些连接是某一个Trans独享的,每次新建一个Trans都需要重新建立连接,这是一个很麻烦的操作,但是Kettle提供了一个叫做共享的功能,可以将数据库连接共享出来。

在“主对象树-DB连接”下,选择想要共享的连接,点击右键,选择共享即可完成操作。共享的数据库连接会以加粗字体显示:
在这里插入图片描述
数据库连接实际上也是保存在文件中的,同样在.kettle下,有一个shared.xml文件,保存了已经共享的DB连接的信息。
在这里插入图片描述

3.5部署

刚才看到,新建的Trans和Job都是独立的文件。这些文件在现场直接执行即可:

  • 将Kettle的程序包部署在现场的ETL机器上,将pan,kitchen所在目录写入PATH变量;
  • 配置.kettle目录下的配置文件shared.xml文件;
  • 将预先配置好的trans和job文件放在ETL机器的指定目录上;
  • 运行kitchen命令运行Job。
  • 下面是一个kitchen命令的示例:kitchen.sh -file=/path/demo.kjb -level-Minimal
发布了418 篇原创文章 · 获赞 745 · 访问量 126万+

猜你喜欢

转载自blog.csdn.net/u013467442/article/details/89519789