分类目录归档:数据仓库

定时运行Kettle任务

下面是用文件方式保存Job和转换时,在Linux运行一个Job的示例:

代码:
./kitchen.sh -norep -file “/root/Desktop/kettle_demo/demo_job.kjb”

注意:Linux环境中,当使用了自定义插件时,必须在Kettle所在目录下运行以上命令,否则会提示找不到自定义的插件。

当使用文件方式(norep)保存Job和Transformation定义时,Job中的Transformation路径要用下面所示的格式,否则会Job会找不到Transformation

代码:
${Internal.Job.Filename.Directory}/demo_transfer.ktr

定时自动执行:
编写一个shell文件:test.sh

代码:
CUR_PATH=$(cd “$(dirname “$0″)”; pwd)
PDI_HOME=/root/pdi-ce-4.1.0-stable/data-integration/
export JAVA_HOME=/usr/java/jdk1.6.0_21/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
cd $PDI_HOME
./kitchen.sh -file=”$CUR_PATH/ascm_data.kjb” >> “$CUR_PATH/kettle.log”

run_ascm_job.sh
然后赋予该shell的执行权限:

代码:
chmod +x ./*.sh

添加自动执行命令:
登录Linux终端,运行crontab -e编辑Linux的定时任务文件:
添加如下一行:

代码:
25 * * * * /root/Desktop/kettle_demo/test.sh

表示在每个小时的第25分钟运行该命令
该定时任务的格式是:<分钟> <小时> <日> <月> <星期> <要执行的命令>
不限的条件就用*表示

运行 service crond restart重启crond服务,接下来等到定时的时间,看一下是否执行了。

如果运气好的话,就应该一切如愿了。

 

不能在Kettle目录外运行kitchen.sh(含官方解释)

you can’t run kitchen.sh from outside the kettle directory cuz the script sets LIBPATH to be a relative path.to fix, you should change to an absolute path. though i’m not sure why you need LIBPATH here, cuz it seems like kitchen should need these libs cuz it doesn’t use the graphics libraries. only spoon should need that stuff.–alex

 下面是该BUG的跟踪情况: