下面是用文件方式保存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”
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服务,接下来等到定时的时间,看一下是否执行了。
如果运气好的话,就应该一切如愿了。
Linux环境中,当使用了自定义插件时,必须在Kettle所在目录下运行以上命令,否则会提示找不到自定义的插件。
这是为什么呢?