关于kettle使用crontab+kitchen部署的一点波折
刚使用kettle不久,由于我们在kettle程序中使用了hive的驱动,因此在kitchen.sh中增加了hive驱动的一行classpath。写的脚本使用kitchen执行我们的job没有任何问题。但是用crontab做计划任务部署上去的时候,发现执行不了了,报错信息是找不到hive驱动。
经过排查,基本确定问题出在classpath上,但是无论是在脚本里面 把classpath补全还是在crontab中把classpath都没有解决问题。不经意查看kitchen.sh的时候,发现如下两行
BASEDIR=`dirname $0`
CLASSPATH=$BASEDIR
才知道原来kitchen的classpath是读取的当前路径,于是在调用kitchen.sh的脚本中增加了一行
cd /pentaho/pentaho/data-integration 切换到kettle的根目录,问题得到解决。
完整的脚本代码为
export JAVA_HOME=/usr/local/java/
cd /pentaho/pentaho/data-integration
./kitchen.sh /rep 192.168.0.13.PDI_Repository /user root /pass *** /dir /Plan_Job /job Job_Load_All /logfile /pentaho/Plan/kitchen_run.log