Kettle

bigdata

Kettle——ETL数据采集工具

# 一、Kettle简介

PDI Pentaho Data Integeration

ETL Extract-Transform-Load

kettle是一款开源的、商业智能Pentabo数据集成软件,纯Java语言编写。

可以运用在各种平台(Window、Linux、Unix)上运行,绿色无需安装,只需要解压就可以使用,数据抽取高效稳定。

Kettle也叫 PDI,在2006年 Kettle 加入了开源的 BI 组织 Pentaho, 正式命名为PDI。这个工具也正如我们中文翻译为水壶那样,它希望把所有需要的数据放到一个水壶里,然后以的方式流出来。

作为Pentaho的一个重要组成部分,现在在国内项目应用上逐渐增多。

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

ETL是用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

# 作用

它是一款ETL数据采集工具,能完成数据抽取,转换、装载。能支持各种数据库(常见Oracle、Mysql、Sqlserver、Postgresql等),各种结构化文件(txt文档、excel文档等)抽取。

这个工具真的很强大,支持图形化的GUI设计界面,然后以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现。

# Kettle包括三大块

  • Spoon——转换/工作(transform/job)设计工具 (GUI方式)
  • Kitchen——工作(job)执行器 (命令行方式)
  • Span——转换(trasform)执行器 (命令行方式)

# 脚本文件

Kettle中有两种脚本文件,transformationjob

  • transformation完成针对数据的基础转换
  • job则完成整个工作流的控制

# 学习视频

天善学院kettle学习视频 (opens new window)

# 二、Kettle下载

# 下载

# 官网下载

可以登录kettl.pentaho.com (opens new window)来下载最新的版本。

下载好解压即可以使用(window平台,点击Spoon.bat;Linux平台,点击spoon.sh

# 我的下载

链接:https://pan.baidu.com/s/1nBCdVBqcXsFyES3pWY6bHQ

提取码:qsm7

# 版本

第一次使用时,如果你没有配置JDK环境,你可能发现,点击Spoon.bat出现闪退或者没有任何反应,所以你要下载JDK。

  • 版本是6.x的,需要JDK1.7版本的;

  • 版本是7.x的,需要JDK1.8版本的;

下载好之后,配置JDK的环境变量,配置完成,再次点击Spoon.bat,等一小会,就会出现kettle的使用界面了。

# 三、windows使用

# windows安装

在kettle官网下载,Kettle是绿色的,下载之后进行解压,解压之后即可直接运行。

解压目录中有.bat文件和.sh文件,.bat就是我们在windows下使用的,.sh就是在Linux下使用的。

我们找到 Spoon.bat这个文件,就可以启动Kettle。启动时间可能较长,打开后如下,都是图形界面的。

Kettle中,主要有2种任务,一个是作业,一个是转换。

# 使用Mysql

Kettle连接MySQL数据库出现问题,连接不上。

报错

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
1

解决

错误信息显示是jar包未安装, kettle 安装mysql 驱动

mysql与Java版本关系

下载驱动

下载mysql 驱动 (opens new window)

解压找到jar包:mysql-connector-java-5.1.15-bin.jar

放到Kettle安装目录下:D:\kettle\data-integration\lib

重启

重启Spoon.bat,问题解决。

mysql数据库连接

# 使用Oracle

使用Oracle,需要导入OJDBC包——ojdbc6.jar

Oracle数据库连接

# 配置数据库连接

创建转换之前,先配置数据库连接。

# 新建转换(.ktr)

打开‘文件’—‘新建’---‘转换’;

# 创建转换

将表输入拖拽到右侧;

将插入/更新拖拽到右侧;

按住Shift键,输入指向输出,完成Hops(节点连接)。

# 配置表输入

双击表输入,配置表输入信息;

数据库连接:配置源数据库相关信息;

点击获取SQL查询语句,选择所要查询的表,从而获取到SQL查询语句;

修改步骤名称为该表名称,以便辨认。

# 配置插入/更新

同理,双击插入/更新,配置插入/更新信息。

新建数据库连接:配置目标数据库相关信息;

选择目标模式;

选择目标表(若无,通过下方按钮SQL,进行创建);

点击获取字段,用来查询的关键字;

点击获取和更新字段,用来选择更新字段;

点击SQL,创建表;

# 运行

保存该转换文件至本地;

运行这个转换,同步数据。

注:只有Hops变亮,运行转换,才进行数据。

# 步骤分类

# 创建作业(.job)

新建作业

# 设置作业定时调度

如下,选择的是按月进行增量调度作业。设置为每月2号1点开始执行。

添加转换

保存在本地。

# 设置增量-修改转换

双击表输入,修改SQL。通过时间戳,采集上月所有更新的数据。

# 按天

=昨天00:00:00 <昨天23:59:59

WHERE INSERT_TIME BETWEEN 
 TO_DATE (
	CONCAT (
		TO_CHAR (SYSDATE-1, 'yyyy-MM-dd'),
		' 00:00:00'
	),
	'yyyy-mm-dd hh24:mi:ss'
)
AND 
 TO_DATE (
	CONCAT (
		TO_CHAR (SYSDATE-1, 'yyyy-MM-dd'),
		' 23:59:59'
	),
	'yyyy-mm-dd hh24:mi:ss'
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Win执行定时任务

一般作业做好后需要做成定时任务,Kettle可以借助Windows的执行计划来完成。

那么可以通过写批处理的方式让执行计划来调用。

命令 描述
/file 作业入口路径
/level 日志输出等级
/logfile 日志输出文件

其中Kitchen和Pan都可以做定时执行,一个是针对作业,一个是针对转换。

.job

cd C:\soft\kettle\data-integration
kitchen /file C:\soft\kettle\resourse-ware\timing.kjb /level Basic /logfile E:\timing.log

@pause
1
2
3
4

.ktr

cd C:\soft\kettle\data-integration
Pan /file C:\soft\kettle\resourse-ware\littltcsvToTable.ktr /level Basic /logfile E:\panTest.log

@pause
1
2
3
4

那么方式定好了,通过Kettle做好自己的作业后,写一个批处理文件。

# 创建.bat

创建批处理文件wr_meas_q_r.bat

E:
cd E:\Install\PDI\data-integration
kitchen /file E:\Data\PDI\wr_day_w_r\wr_meas_q_r.kjb /level Basic /logfile E:\Data\PDI\logs\1.log
@pause
1
2
3
4

# 创建计算机定时任务

然后开始创建执行计划

计算机管理 -> 任务计划程序 -> 任务计划程序库 -> 右键创建基础任务信息

选择自定义的批处理文件

完成定时任务。至此Ketlle自动执行作业制作完毕。

设置

注意要点:

  1. 批处理文件(.bat)中,尽可能不要出现中文路径,若出现,还需特殊处理。
  2. 并且该文件保存的格式必须是ASCII码,不能是UTF-8码,否则会出现有中文字眼的时候无法执行的情况。
  3. 记住勾选“不管用户是否登录都要运行”。

kettle配置win执行计划参考文章 (opens new window)

# 四、Linux使用

# Linux kettle6.x安装

先要导入Kettle的压缩包——data-integration.tar.gz

解压Kettle的压缩包

tar -zxvf data-integration.tar.gz /data/kettle
1

解压之后进入目录,我们会看到,这里有.bat文件和.sh文件.

.bat是在windows下使用的,.sh就是在Linux下使用的。

# Linux kettle7.x安装

  • 安装环境:CentOS 7
  • kettle版本:pdi-ce-7.1.0.0-12.zip
  • 需要JDK环境为1.8,若有JDK则需要卸载自带JDK。

# 安装JDK1.8

我的路径是/usr/local下,配置Java环境变量

vim /etc/profile
1

在最后一行添加以下内容

export JAVA_HOME=/usr/local/jdk1.8.0_11
export JAVA_BIN=/usr/local/jdk1.8.0_11/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/bigdatas.jar
export PATH=$PATH:$JAVA_HOME/bin
1
2
3
4

其中:JAVA_HOME为JDK文件解压后路径

修改后,使配置文件生效

source /etc/profile
1

验证是否成功

java -version
1

出现java版本信息,表示JDK安装成功

# kettle安装

下载

官网下载要使用版本kettle文件

kettle下载地址 (opens new window)

或者

链接:https://pan.baidu.com/s/1Jv3Q9ai_JG7M3yk02tn05g 

提取码:0kvv 
1
2
3

解压

下载后为zip文件:pdi-ce-7.1.0.0-12.zip,利用命令解压

unzip pdi-ce-7.1.0.0-12.zip
1

(若提示未找到命令,yum安装zip: yum install -y unzip zip)

解压后,得到新文件夹:data-integration,为Kettle的安装和执行目录

进入 data-integration文件夹,执行权限命令

chmod +x *.sh
1

在 data-integration文件夹下,执行./kitchen.sh 如果出现帮助信息表示部署成功。

./kitchen.sh
1

可能出现的警告:

先安装epel

yum -y install epel-release
1

下载最新的nux-dextop-release rpm包,下载地址

链接:https://pan.baidu.com/s/1BFjiHRoOGfFhhOBHVhQJSg 

提取码:geee 
1
2
3

将对应资源上传服务器,资源所在目录下执行

rpm -Uvh nux-dextop-release-0-5.el7.nux.noarch.rpm
1

安装webkitgtk rpm包 ,执行 :

yum install webkitgtk
1

安装成功后,再执行./kitchen.sh,警告消失。

./kitchen.sh
1

可能遇到的报错

信息: Setting the server's publish address to be /repositories
2018/09/28 11:10:01 - org.pentaho.di.ui.util.EnvironmentUtils@6482eef - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : Could not execute command
2018/09/28 11:10:01 - org.pentaho.di.ui.util.EnvironmentUtils@6482eef - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : java.io.IOException: Cannot run program "lsb_release": error=2, 没有那个文件或目录
2018/09/28 11:10:01 - org.pentaho.di.ui.util.EnvironmentUtils@6482eef - at java.lang.ProcessBuilder.start(ProcessBuilder.j
1
2
3
4

该报错可以通过安装redhat-lsb来解决。

yum -y install redhat-lsb
1

# 导入mysql连接包

链接:https://pan.baidu.com/s/1f2vOhC7q74w7FVS4uKDw0A 

提取码:4n8j 

1
2
3
4

将mysql-connector-java-5.1.41-bin.jar上传至/kettle/data-integration/lib

CentOS部署Kettle7.1参考文档 (opens new window)

# Linux执行定时任务

# 修改.job

  1. 修改job转换路径,修改为linux中存储.ktr文件目录
  2. 修改日志存储目录,修改为linux存储日志目录
  3. 将转换、工作文件上传至linux

# 创建.sh执行定时任务

linux环境下kettle运行

  1. 创建oa.sh,将以下内容复制粘贴到里面;

    vi oa.sh

    export JAVA_HOME=/data/java/jdk1.7.0_79
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/bigdatas.jar
    /data/kettle/data-integration/kitchen.sh -file=/data/kunlun/JOB_OA.kjb
    
    1
    2
    3
    4

    需注意:

    若.sh是在window下创建的,则需要改换行符号。

​ 然后保存上传即可。

  1. 然后赋予oa.sh执行权限。

    chmod +x /data/kunlun/oa.sh
    
    1
  2. 执行oa.sh文件

    nohup ./oa.sh &
    
    1
    • ./ 的意思是执行当前路径下脚本文件;

    • nohup的意思是后台执行;

    • & 表示”and”的符号,连接的作用。添加到命令的尾部;

  3. 按终端上键盘任意键退回到shell输入命令窗口。

  4. jobs 查看任务

  5. 查看进程

    ps -ef | grep kitchen
    
    1
  6. exit 退出,不要直接点关闭程序按钮关闭终端。

# 更换定时任务

  1. 查看进程

    ps -ef | grep kitchen
    
    1
  2. Kill进程

    kill -9 进程号
    
    1
  3. 删除相应的转换、工作文件

    rm -rf xxx.ktr
    rm -rf xxx.kjb
    
    1
    2
  4. 上传更正后的转换、工作文件

  5. 执行xxx.sh文件

    nohup ./xxx.sh &
    
    1
  6. 按终端上键盘任意键退回到shell输入命令窗口。

  7. jobs 查看任务

  8. 查看进程

    ps -ef | grep kitchen
    
    1
  9. exit 退出,不要直接点关闭程序按钮关闭终端。

# 五、高级使用

# 时间戳增量(oracle)

# 按天

=昨天00:00:00 <昨天23:59:59

job开始时间:每天1点开始执行工作。

WHERE INSERT_TIME BETWEEN 
 TO_DATE (
	CONCAT (
		TO_CHAR (SYSDATE-1, 'yyyy-MM-dd'),
		' 00:00:00'
	),
	'yyyy-mm-dd hh24:mi:ss'
)
AND 
 TO_DATE (
	CONCAT (
		TO_CHAR (SYSDATE-1, 'yyyy-MM-dd'),
		' 23:59:59'
	),
	'yyyy-mm-dd hh24:mi:ss'
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 按周

采集上一周的数据:

=7天前00:00:00 <=1天前23:59:59

job开始时间:每天4点10分开始执行工作。

WHERE INSERTTIME BETWEEN 
 TO_DATE (
	CONCAT (
		TO_CHAR (SYSDATE-7, 'yyyy-MM-dd'),
		' 00:00:00'
	),
	'yyyy-mm-dd hh24:mi:ss'
) 
 AND 
 TO_DATE (
	CONCAT (
		TO_CHAR (SYSDATE-1, 'yyyy-MM-dd'),
		' 23:59:59'
	),
	'yyyy-mm-dd hh24:mi:ss'
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 按月

=上个月2号00:00:00 <这个月1号 23:59:59

job开始时间:2号1点开始执行工作。

WHERE
	TO_DATE (
	CONCAT (
		TO_CHAR (ADD_MONTHS(SYSDATE, -1), 'yyyy-mm-'),
		'02 00:00:00'
	),
	'yyyy-mm-dd hh24:mi:ss'
) <= docm.IMPORTTIME 
AND docm.IMPORTTIME < TO_DATE (
	CONCAT (
		TO_CHAR (SYSDATE, 'yyyy-mm-'),
		'01 23:59:59'
	),
	'yyyy-mm-dd hh24:mi:ss'
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 时间戳增量(mysql)

# 按天

=昨天00:00:00 <昨天23:59:59

job开始时间:每天1点开始执行工作。

WHERE TS BETWEEN 
CONCAT (
		DATE_SUB(curdate(),INTERVAL 1 DAY),
		' 00:00:00'
	)
AND 
 CONCAT (
		DATE_SUB(curdate(),INTERVAL 1 DAY),
		' 23:59:59'
	)
1
2
3
4
5
6
7
8
9
10

# 发送邮件

# 新建作业

# 地址设置

  • 目的地址: 即收件人的地址。
  • 抄送、暗送:即抄送人、暗送人的郵箱地址。
  • 回復名称:這里的回復名稱指的是發件人的名稱。
  • 发件人地址:這里指的是發件人的地址。
  • 回复地址 : 對方回復郵件時的回復地址。

# 服务器设置

  • 发件地址可以使用的QQ、126、163等邮箱

  • smtp server的填写smtp.qq.com或者smtp.126.com、smtp.163.com等等都可以。这里我用Q163邮箱发的邮件,自然也用Q163的smtp了;

  • port 默认端口基本上都是25

  • 密码为客户端授权密码,而不是邮件登录密码。

# 获取邮箱客户端授权密码

例:163邮箱:

进入到常规设置页面后我们在右边的快捷栏中找到客户端授权密码按钮。

接着我们点击开启按钮,在开启左边打勾,然后点击确定按钮。

点击确定后我们有的邮箱需要验证手机号才能进行下一步,点击确定后我们在设置授密码的框内输入自己需要设置的授权密码,然后点击确定。

最后点击确定就完成了授权密码的设置,需要注意的是授权密码需要记住。

# 邮件消息设置

消息可根据需要进行消息设置,如不勾选会将执行结果之类的全部作为附件内容;

# 附件

# SecureCRT连接

# 安装

第一步、下载安装文件

securecrt 64位:网盘地址(如果失效自行下载就行)

链接:https://pan.baidu.com/s/1giuXnJwsVsshLi_SFt0ZvA

提取码:md0z

第二步、安装

1、点击安装程序运行(scrt83-x64.exe)

2、next;

3、勾选I accept 然后next;

4、选Common profile,next;

5、选Custom安装,自己选择安装路径,Next;

6、选择安装路径,我选择的是D盘根目录下software文件夹,然后next;

7、直接next;

8、Install安装,等待安装完成,Finish结束安装;

# 破解

将注册机中keygen.exeSecureFX.v.7.0-kg.exe均拷贝至安装目录。

右击keygen.exe -> 以管理员身份运行 -> 点击patch -> 选中SecureCRT.exe,下一步 ->提示成功,确认 -> 选中LicenseHelper.exe,下一步 -> 提示成功,确认

双击SecureCRT.exe

直接下一步

选择Enter License Manually 输入对应的信息,下一步,在注册机未找到的信息,空着就好,直接下一步

在将Seral Number和License Key输入到注册界面,如下图

最后将Issue输入到注册界面,剩下的空白界面不用输入。

最后破解完成。即可免费使用。

# 使用

# 第一种方式:使用命令

1.在使用SecureCRT上传下载之前需要给服务器安装lrzsz

yum -y install lrzsz 
1

(注:参数-y中"y"的意思是:当安装过程提示选择全部为"yes")

2.命令sz、rz的使用方法:

rz中的r意为received(接收),输入rz时、意为服务器接收文件,既将文件从本地上传到服务器。

sz中的s意为send(发送),输入sz时、意为服务器要发送文件,既从服务器发送文件到本地,或是说本地从服务器上下载文件。

注:不论是send还是received,动作都是在服务器上发起的。

上传文件只需在shell终端仿真器中输入命令rz,即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下。

下载文件只需在shell终端仿真器中输入命令sz 文件名,即可利用Zmodem将文件下载到本地某目录下。

通过"File Transfer"可以修改下载到本地的默认路径。设置默认目录:options-->session options-->file transfer。

rz用法:命令输入 rz 回车,转出选择要上传的文件, 点Add添加到send发送列表。

首先要进入要上传到的linux服务器目录. 再执行rz

sz用法

  • 下载一个文件:sz filename
  • 下载多个文件:sz filename1 filename2
  • 下载dir目录下的所有文件,不包含dir下的文件夹:sz dir/*

还是先进入路径,再进行 sz

输入 sz 文件名即可.

下载到哪去了呢?

到设置的下载目录里面找。

# 第二种方式:用sftp

securecrt 按下ALT+P就开启新的会话 进行ftp操作。

  • 输入:help命令,显示该FTP提供所有的命令
  • pwd: 查询linux主机所在目录(也就是远程主机目录)
  • lpwd: 查询本地目录(一般指windows上传文件的目录:我们可以通过查看"选项"下拉框中的"会话选项",我们知道本地上传目录为:D:/我的文档)
  • ls: 查询连接到当前linux主机所在目录有哪些文件
  • lls: 查询当前本地上传目录有哪些文件
  • lcd: 改变本地上传目录的路径
  • cd: 改变远程上传目录
  • get: 将远程目录中文件下载到本地目录
  • put: 将本地目录中文件上传到远程主机(linux)
  • quit: 断开FTP连接

打开secureCRT的FTP工具

进入到要上传的本地目录

再进入linux目录

再使用put 文件名上传到linux服务器

使用get 从linux服务器下载到本地

文件夹目录依然是开始设置的, lcd 本地目录和 cd linux目录。

上传文件夹:

put -r 文件夹名称/
1

# 案例

上传文件至服务器

ALT+P 打开新窗口

pwd: 查询linux主机所在目录(也就是远程主机目录)

lpwd: 查询本地目录

cd: 进入远程主机目录

lcd: 进入本地目录

get: 将远程目录中文件下载到本地目录

put: 将本地目录中文件上传到远程主机(linux)

即可上传。

如果想将日志下载到本地目录

get XXX.log

quit: 断开FTP连接

# 六、问题汇总

# 连接Mysql

错误提示:

错误连接数据库:org.pentaho.di.core.exception.KettleDatabaseException:
Erroroccured while trying to connect to the database
Exceptionwhile loading class
org.gjt.mm.mysql.Driver
1
2
3
4

解决方法: 新手连接kettle数据库问题

1.连接 主机名称如果数据库在本机上 主机名称是 xxx.xxx.xxx.xxx

2.jar包 mysql-connector-java-5.1.44-bin.jar 没有导入 应该导入到 data-integration\lib 下问题解决

# 多个转换文件之间数据库连接共享

  • 先创建数据库连接,
  • 然后进行共享;
  • 再之后新建的tr文件即可获取到该数据库连接;

# Kettle同步导致中文乱码

Window下执行转换,同步数据之后,出现???中文乱码。

解决

在目标端数据库进行配置

  1. 修改落地数据库的客户端编码

    set names utf8;
    
    1

    设置数据库客户端的字符集为utf8。

  2. 添加命令参数,设置编码

    打开Options,添加参数characterEncoding,设置值为gbk/utf8

最后确保设置成功!

# 并发过多导致报错

kettle 工具提数从源数据库到目标数据库。

但是 由于kettle 启动的时候,上面的job都是并发的,感觉服务器的物理内存都被吃掉了,基本上是99%满了。报错日志如下:

2019/12/17 04:31:03 - 清空wr_wpc_m_all - Loading transformation from XML file [file:///D:/data/kettle/win_wpc/wr_wpc_m_all_truns.ktr]
2019/12/17 04:31:03 - 清空wr_wpc_m_all - Using run configuration [Pentaho local]
2019/12/17 04:31:03 - 清空wr_wpc_m_all - Using legacy execution engine
2019/12/17 04:31:03 - wr_wpc_m_all_truns - 为了转换解除补丁开始  [wr_wpc_m_all_truns]
2019/12/17 04:31:25 - 表输入 wr_wpc_m_all.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : An error occurred, processing will be stopped: 
2019/12/17 04:31:25 - 表输入 wr_wpc_m_all.0 - Error occurred while trying to connect to the database
2019/12/17 04:31:25 - 表输入 wr_wpc_m_all.0 - 
2019/12/17 04:31:25 - 表输入 wr_wpc_m_all.0 - Error connecting to database: (using class org.gjt.mm.mysql.Driver)
2019/12/17 04:31:25 - 表输入 wr_wpc_m_all.0 - Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
2019/12/17 04:31:25 - wr_wpc_m_all_truns - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : Something went wrong while trying to stop the transformation: org.pentaho.di.core.exception.KettleDatabaseException: 
2019/12/17 04:31:25 - wr_wpc_m_all_truns - Unable to get database metadata from this database connection
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at java.lang.Thread.run (Thread.java:745)
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at org.pentaho.di.trans.step.StepInitThread.run (StepInitThread.java:69)
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at org.pentaho.di.trans.steps.tableinput.TableInput.init (TableInput.java:356)
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at org.pentaho.di.trans.step.BaseStep.stopAll (BaseStep.java:2915)
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at org.pentaho.di.trans.Trans.stopAll (Trans.java:1889)
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at org.pentaho.di.trans.steps.tableinput.TableInput.stopRunning (TableInput.java:299)
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at org.pentaho.di.core.database.Database.cancelQuery (Database.java:727)
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at org.pentaho.di.core.database.Database.getDatabaseMetaData (Database.java:2917)
2019/12/17 04:31:25 - wr_wpc_m_all_truns - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseException: 
2019/12/17 04:31:25 - wr_wpc_m_all_truns - Unable to get database metadata from this database connection
2019/12/17 04:31:25 - wr_wpc_m_all_truns -  at java.lang.Thread.run (Thread.java:745)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

暂时解决方案:

由原来的一个拆分为3个,分别进行数据同步,减少并发;

# 七、Kettle相关资料

官网:kettl.pentaho.com (opens new window)

kettle下载地址 (opens new window)

下载mysql 驱动 (opens new window)

天善学院kettle学习视频 (opens new window)

kettle配置win执行计划参考文章 (opens new window)

CentOS部署Kettle7.1参考文档 (opens new window)