Kettle定时任务执行(Linux&Windows)和错误总结
环境描述:
现在需求要定时地执行kettle的作业任务,自动化地完成ETL工作,kettle运行环境可分为Linux和Windows。
解决方案:(Windows)
1.1:安装jdk,下载kettle,kettle运行依赖jdk。
jdk下载地址:https://www.oracle.com/technetwork/java/javase/overview/index.html
kettle下载地址:https://community.hitachivantara.com/docs/DOC-1009855
windows环境变量安装参考:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
1.2:解压并运行目录中的spoon.bat。
1.3:使用kettle新建一个转换ktr和作业job,教程参考:http://www.kettle.net.cn/d
这里讲定时任务如何设置,在通用里兴建一个start和转换,转换要指定ktr的位置,双击start按钮,设置定时任务即可。
方案解决:(Linux)
2.1:环境准别:centos6.5,jdk1.8,kettle安装包。
linux安装jdk:https://www.cnblogs.com/shihaiming/p/5809553.html
用java -version检查并查看JAVA_HOME:
2.2:在/opt/kettle,新建四个目录,kettle存放解压的kettle安装包,shells存放kettle任务运行的shell脚本,job存放kettle的准换和作业,logs存放任务执行的日志。
*2.3:上传kettle安装包,解压,查看文件目录和windows下相似。
赋予sh执行权限:chmod u+x .sh
运行kitchen.sh和spoon.sh进行测试,环境稳定即出现相关指令的帮助。
2.4:讲lib下的jar包拷贝到linux的运行环境下,kettle运行的jar包默认在lib下,现在拷贝到linux运行的libswt/linux/x86下,否则运行会报错ClassNotFound
2.5:在windows下测试好的ktr上传到linux下,执行文件命令:
./kitchen.sh -file=/root/kettle/kettle_file/job/ceshi.kjb-level
报错:Couldn’t find starting point in this job.
解决方案:-file必须执行job任务,将ktr任务放入kjb中,执行kjb
2.6:执行 ./kitchen.sh -file=/opt/kettle/job/邮件.kjb,成功
如果报错:在windows下修改转换任务的路径为linux下ktr的路径
报错解决:Could not find /…,在windows下双击准换步骤
2.7:shell脚本编写,使用crontab任务调度执行:
2.8:编写crontab定时任务:10分钟执行一次
Linux的crontab任务调度参考:https://www.cnblogs.com/intval/p/5763929.html