ubuntu使用crontab运行kettle无效

Ubuntu crontab kettle .kettle配置文件 不运行

Kettle技术讨论区,论坛内容由kettle中文网(www.kettle.net.cn)提供技术支持
1.安装配置说明;2.常见问题

版面规则
请务必将问题描述清晰!!!1.软件版本:2.发生频率:每次/经常/偶尔3.报错日志截图(可以直接粘贴图片):
回复
hanslee
帖子: 2
注册时间: 2019年 6月 22日 星期六 4:01 pm

ubuntu使用crontab运行kettle无效

#1

帖子 hanslee » 2019年 6月 22日 星期六 4:16 pm

大家好,最近在尝试使用kettle来开发每日报表相关的ETL时,发现在winodws下运行正常的kettle项目。放到ubuntu下手动运行也没有问题,但是使用crontab运行就没有效果。项目的功能很简单,查询一些表中前一天的数据,然后更新到另一个表中。在kettle的转换文件中,绑定mysql数据库时,使用的是.kettle中的配置文件kettle.properties中配置的数据库ip,账号密码等信息。


可以确定,在window下运行是没有问题的。将job和trans文件上传到ubuntu中,将配置文件上传到用户根目录下的.kettle文件夹中,手动执行kitchen.sh也没问题。然后创建了crontab的后台任务,定时执行‘ /software/data-integration/kitchen.sh -file=/home/hadoop/sp/dw_f_count.kjb’这条命令,发现定时任务工作,但该命令未执行。


查询百度后,有大神提到过使用sh脚本,遂修crontab为‘/home/hadoop/sp/run_kettle.sh’,然后在run_kettle中执行上面的kettle命令,然而依然无效。又查询了一番,有大神提到在脚本文件中,要引入java的环境变量,我尝试过将/etc/profile中的环境变量写入脚本文件中,也尝试过在脚本中source profile文件,都没有效果。


有大神提到,想要后台运行,在kettle中绑定mysql连接时,必须写linux上的绝对路径和直接的访问信息。然而考虑到运维的问题,这显然是不可接受的。请问有大神碰到过类似的问题了嘛?是否可以让crontab后台执行kettle命令,并且能够从.kettle下的配置文件中读取数据库信息?


hanslee
帖子: 2
注册时间: 2019年 6月 22日 星期六 4:01 pm

Re: ubuntu使用crontab运行kettle无效

#2

帖子 hanslee » 2019年 6月 22日 星期六 4:45 pm

补充一下:


我有检查过脚本权限的情况,给脚本加了执行的权限。执行会报如下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/pentaho/commons/launcher/Launcher : Unsupported major.minor version 52.0

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)

at java.lang.ClassLoader.defineClass(ClassLoader.java:615)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)

at java.net.URLClassLoader.access$000(URLClassLoader.java:58)

at java.net.URLClassLoader$1.run(URLClassLoader.java:197)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Could not find the main class: org.pentaho.commons.launcher.Launcher. Program will exit.


回复