kettle试用 文末附kettle资源包

本文详细介绍Kettle的安装配置、基本操作与高级应用,包括数据导入导出、转换处理、定时任务设置及数据同步策略,适合初学者快速上手。

kettle试用

一、kettle试用

K ettle 简介

K ettle 是一款国外开源的 ETL 工具,纯 java 编写,可以在 Window 、 Linux 、 Unix 上运行,绿色无需安装,数据抽取高效稳定。 K ettle 允许用户管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。软件用于从不同的多个数据源获取数据,对获得的数据进行处理,最后将处理好的数据加载到目标系统。 Kettle 中有两种脚本文件, transformation 和 job , transformation 完成针对数据的基础转换, job 则完成整个工作流的控制。

 

下载和安装

由于 Kettle 是使用 Java 语言编写的,所有 Kett le 的运行需要有 Java 环境, 所以要 安装 JDK 。下载好 kettle 文件后,需要配合 JDK 1.8 版本。版本过高或者过低都不合适。检验版本是否配置成功,运行 cmd 输入 java -version ( java 和 -version 之间有空格 ) 。若如图所示,显示版本信息,则说明安装和配置成功 。

 

 

Kettle 常用三大家族: Spoon 、 Pan 、 Kitchen 。

Spoon: 通过图形界面方式设计、运行、调试 Job 与 Transformation 。

Pan: 通过脚本命令方式来运行 Transformation 。

Kitchen: 通过脚本命令方式来运行 Job ,一般就是通过调用 Kitchen 脚本来完成定时任务。

进入 kettle\data-integration , 如果 Kettle 部署在 windows 环境双击 Spoon.bat 文件启动 Kettle ,如果是在 Linux 环境下,则运行 spoon.sh 文件启动。 如下是 windows 环境的情况。

 

出现如下界面,则 Kettle 就安装成功了

 

 

安装常见问题

1 如果打开之后就闪退,是因为默认内存配置太大,需要修改。用记事本或者 Note pad++ 打开 spoon .bat ,将

if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms2058m" "-Xmx1024m" "-XX:MaxPermSize=256m"

改为   if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=256m"  

 

 

2 配置 JVM 及内存配置问 题

如果 java_home 设置了仍提 示

  could not find the main class. Program will exit!

可以设置环境变量 PENTAHO_JAVA_HOME 变量值为 jdk 的安装目录 1.6 以上即可 。

3 连接数据库找不到驱动问题 MySql 为 例

提示错误

[mysql] : org.pentaho.di.core.exception.KettleDatabaseException:
Error occured while trying to connect to the database
Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed
org.gjt.mm.mysql.Driver

解决办法把 mysql-connector-java-5.1.21-bin.jar 拷贝 到

D:\SoftWare\kettle\data-integration\lib 下面然后重新启动 spoon 即可 。

 

新建转换 / 作业

打开 kettle 后,点击文件 - 新建,可以新建转换或者作业。

 

新建一个转换后,可以在界面左侧看到有主对象树和核心对象两个模块,点击核心对象,会出现一系列的步骤。其中,输入步骤就是将不同的数据源的数据输入到 kettle 中,输出步骤就是将数据输出到目标系统。转换,应用,流程,连接,查询等步骤都是用于对数据进行一系列的操作和处理。

 

 

转换常用环节介绍

类别

环节名称

功能说明

I nput

文本文件输入

从本地文本文件输入数据

表输入

从数据库的表中输入数据

获取系统信息

读取系统信息输入数据,包括系统时间, I P 地址,命令行参数等

生成记录

用于生成指定的数据,可以手动输入

O utput

文本文件输出

将处理过的数据输出到本地文本文件

表输出

将数据输出到数据库的表中

插入 / 更新

根据处理结果对数据库进行更新,若需要更新的数据在数据库表中没有记录,则会报错停止

删除

根据处理结果对数据库记录进行删除,若需要删除的数据在忽聚酷表中无记录,则会报错停止

L ookup

数据库查询

根据设定的查询条件,对目标进行查询,返回需要的结果字段

流查询

将目标读取到内存,通过查询条件对内存中数据进行查询

调用 D B 存储过程

调用数据库的存储过程

T ransform

字段选择

选择需要的字段,过滤掉不要的字段,可将不要的字段存储到空操作中

过滤记录

根据条件对记录进行分类

排序记录

将数据根据某条件进行排序

空操作

无操作

增加常量

增加需要的常量字段

S cripting

Modified Java Script Value

扩展功能,编写 J avaScript 脚本,对数据进行相应处理

M apping

映射(子转换)

数据映射

Job

S et Variables

设置环境变量

G et Variables

获取环境变量

 

表输入

以最常见的表输入为例,说明数据库的导入。点击输入,展开一系列的输入步骤,拖动“表输入”步骤到操作界面,双击打开,会出现数据库连接的步骤。

 

点击新建,新建一个数据库的连接。

 

 

 

选择连接类型,输入连接名称,主机名称,数据库名称,用户名和密码。输入完成后点击测试,如果出现如下窗口说明连接成功(此时联网要连到公司的内网,否则不能连接到公司数据库,连接失败)。

如果不能新建连接,报错,可能是因为缺少文件,要复制 lib 中所有 ojdbc 开头的文件到 kettle/data-integration/lib 中,之后关闭 kettle 并重新打开,问题即可解决。

然后点击“获取 SQL 查询语句”,选择“表”,选择需要导入数据的表,点击确定。出现 SQL 语句,可以根据要求输入 SQL 语句对数据进行操作。点击预览可以查看查询结果。

 

假设有这样一个表格:

I d

T ype

V alue

Entry_time

Update_time

Delete_time

s tate ( 1 or 0 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如果有数据的增加,可以根据入库时间来筛选。

Select id, type, value, entry_time,

From table

Where entry_time>?

如果有数据的更新或者删除,同样可以根据 u pdate_time 和 d elete_time 进行筛选。

也可以用输入中的其他输入步骤,例如 Excel 输入,文本文件输入,生成随机数,获取系统信息等步骤导入不同的数据。例如,拖动生成记录到界面,打开生成记录,可以修改步骤名称,生成数据量,填写字段名称,类型和具体的值即可生成相应的数据。

 

数据连接

导入数据后,按住 shift 键,鼠标点住“表输入“到下一个步骤,可以将数据导入到下一步骤。可以在转换,应用,流程等步骤中选择具体的步骤对数据进行处理。例如,在剪切字符串中,对应输入输入流字段,输出流字段,选择剪切字段的起始和终止位置即可将字符串进行剪切。在连接中,选择记录集连接,并设定每个步骤的连接字段,可以将两个表的记录进行连接,可以选择 full outer join, left outer join, right outer join, inner join 四种连接方法。

 

Kettle 中的“合并连接”算法要求输入流事先排好序。因此,对每个连接的输入流,需要先根据其连接的字段进行排序。

 

本实例中,记录集根据每个输入流的 I D 字段进行连接。因此,对每个输入流需要事先根据 I D 进行排序。可以根据实际情况选择升序或降序排列,这里选择升序排列。

 

表输出

数据处理完成后,在输出步骤中选择具体的输出方法,将数据输出到指定位置。常用的输出有 Access 输出, Excel 输出,文本文件输出,表输出等等。方法和数据输入的方法类似,过程是相反的。

以常见的表输出为例,在“输出”中,选择表输出。

 

拖到操作窗口,双击“表输出”打开,出现如下界面。

 

选择数据库连接,即要输出的数据库,和目标表。然后输入提交记录数量。也可以输出指定的数据库字段,点击“数据库字段”中的“输入字段映射”,编辑映射匹配,输入指定的要输出的字段。

一个简单的数据输入、处理、输出转换如下图所示。

 

K ettle 数据同步

Kettle 中的数据同步,一是可以使用时间戳的方法。在数据表中增加一时间戳字段,每次对表中的数据进行更新时,更新相应记录的时间戳字段。 Kettle 中对数据进行同步时,比较新旧数据表中对应记录的时间戳字段。对于每条记录,若新数据表中的时间戳字段大于旧数据表中的时间戳字段,则说明数据已更新过,应进行同步,对旧数据表中的相应记录需要进行相应更新;反之则表示数据未进行过修改,新旧数据表中的该条记录是一致的,因此对于该条记录同步操作无需进行操作。二是使用 k ettle 内置的“合并记录”组件。该组件合并两个数据流,并根据某个关键字进行排序,这两个数据流被比较,以标识相等的、变更的、删除的、新建的记录。

 

在“连接”中,选择“合并记录”。将组件拖到操作窗口,双击打开,出现如下界面。

 

在界面中选择新旧数据源,设定匹配关键字和数据字段,“合并记录”组件会将新旧数据流合并成一个数据流输出并为其增加一标志字段(默认名称为 f lagfield ),该字段可能的取值有 i dentical, changed, deleted, new 四种。在下方的页面中切换至 Preview data ,并点击选择“合并记录”组件可进行数据预览,如下图所示。

 

每条记录根据 f lagfield 字段的值需要采取不同的操作。在“流程”中,选择“ S witch/Case ”,将组件拖至操作窗口。

 

双击组件进行编辑。选择 S witch 字段为 f lagfield ,根据 C ase 取值范围中的取值为其指定下一个目标步骤( n ew →表输出, c hanged →更新, d eleted →删除),并指定默认目标步骤( i dentical →空操作)。

 

转换的完整流程如下图所示。

 

定时处理数据

 

定时处理数据必须在作业的模式下建立,因此要新建一个作业,然后 点击面板左侧的核心对象,选择通用文件夹下的 START 和转换并把它拖到右侧的编辑区中,按住 shift 画线连接 “START” 和 “ 转换 ” 。双击“ START ”出现如下界面。

 

勾选“重复”,在类型中,可以选择“时间间隔”,“天”,“周”,“月”。可以根据具体的需求选择合适的间隔时间。

 

再双击转换,打开,点击浏览,选择要执行的转换。选择完成后,点击运行,运行这个作业,就会按照预定的时间间隔执行指定的转换。

 

 

链接: https://pan.baidu.com/s/1HfzfM6qg8OJoujEIU6Ypkw 提取码: 81sd 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值