一、kettle自带的调度会长时间启动kettle软件占用系统内存,随着时间长同时还会出现卡掉,或者被kill的现象。我们采用win或linux定时任务取而代之。
1、在win7系统中我们采用计划任务定时调度kettle:
①首先用kettle创建ktr文件(简单易懂本次采用直接从mysql读数据然后存入txt文档)
a、创建DB连接如图:
b、将创建的DB连接测试通过之后右键共享出来:
c、简单创建ktr和kjb
② 编写批处理文件kettlejob.bat:(如下)
@echo off
C:
cd C:\Users\test\Desktop\outfiles\pdi-ce-7.1.0.0-12\data-integration
Kitchen.bat /file=C:\Users\test\Desktop\outfiles\testkettle.kjb /level:Basic>>C:\Users\test\Desktop\outfiles\kettle_%date:~0,4%%date:~5,2%%date:~8,2%.log
exit
注:cd到kettle bin 目录使用 Kitchen.bat 调用 然后将日志以年月日的格式输出到指定文件目录以便查看,。
③到这时你会发现win直接调用bat文件会出现屏幕闪烁弹出cmd框实在不友好。接着研究创建vbs文件静默运行直接解决之间的问题创建test.vbs:
DIM objShell
set objShell=wscript.createObject("wscript.shell")
iReturn=objShell.Run("cmd.exe /C C:\Users\test\Desktop\outfiles\kettlejob.bat", 0, TRUE)
④打开win7控制面板找到管理工具然后找到计划任务:
a、新建任务
b、创建触发器:
c、选择刚才创建的vbs文件:”
至此直接完美整合win7计划任务调度kettle静默运行。
2、在centos7中整合kettle运行时必须保证安装了crontab
① 将kettle7上传到centos7指定文件夹
②修改etc/profile配置KETTLE_HOME
③分别创建schedule.sh和testkettle.kjb和tettt.ktr:
a、schedule.sh
#export JAVA_HOME=/usr/java/jdk1.8.0_121
#export PATH=$PATH:$JAVA_HOME/bin
#export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
source /etc/profile
$KETTLE_HOME/kitchen.sh -file=/data/kettle/testkettle.kjb >>/data/kettle/logs/log$(date +"-%Y-%m-%d").log 2>&1
b、testkettle.kjb和tettt.ktr
③往 cron 中添加一个作业
crontab –e
*/5 * * * * /data/kettle/schedule.sh :每五分钟执行一次调度
以下是 crontab 的常用命令:
crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建。
crontab –l : 显示 crontab 文件。
crontab -r : 删除 crontab 文件。
crontab -ir : 删除 crontab 文件前提醒用户。
最后:crontab -e 进入定时任务编辑文件,命令格式见下方:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
例如:每天早上7:50执行一次execron.sh
50 7 * * * /data1/testdata/execron.sh
详细执行命令解释请参考百度百科: