import org.pentaho.di.core.KettleEnvironment
import org.pentaho.di.core.exception.KettleException
import org.pentaho.di.core.exception.KettleXMLException
import org.pentaho.di.job.Job
import org.pentaho.di.job.JobMeta
import org.pentaho.di.trans.Trans
import org.pentaho.di.trans.TransMeta
public class ReadJob {
public static void runJob(String jobname){
try {
KettleEnvironment.init()
//jobname 是Job脚本的路径及名称
JobMeta jobMeta = new JobMeta(jobname, null)
Job job = new Job(null, jobMeta)
//向Job 脚本传递参数,脚本中获取参数值:${参数名}
// job.setVariable(paraname, paravalue)
job.start()
job.waitUntilFinished()
if (job.getErrors() >0) {
System.out.println("decompress fail!")
}
} catch (KettleException e) {
System.out.println(e)
}
}
// 调用Transformation示例:
public static void runTrans(String filename) {
try {
KettleEnvironment.init()
TransMeta transMeta = new TransMeta(filename)
Trans trans = new Trans(transMeta)
trans.prepareExecution(null)
trans.startThreads()
trans.waitUntilFinished()
if (trans.getErrors()!=0) {
System.out.println("Error")
}
} catch (KettleXMLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (KettleException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
public static void main(String[] args) {
String jobname="D:/syslog_All/spoon/job_csv_bsf.kjb"
runJob(jobname)
// String filename="D:/syslog_All/spoon/csv_fm.ktr"
// runTrans(filename)
}
}
之前借用别人的笔记本配置了kettle, 开发完成后更换了自己的笔记本, 再次配置kettle的时候发现kettle打不开了, 现在附上安装kettle流程和遇到问题解决的思路和办法
这次工作中用到的是经过公司封装的kettle, 免安装版, 不是公司封装的也是免安装的好像, 只需要将压缩包解压即可
kettle是一个纯java开发的工具, 所以配置kettle之前一定要配置上java环境, 网上说java版本至少要在1.6以上, 但是自己安装中发现只有1.8版本的jdk可以正常运行kettle, 这个应该跟kettle的版本也有关, 为此我同时安装了1.6、1.7、1.8三个版本的jdk.
jdk的配置这里就不讲了, kettle的配置本身只需要一个环境变量, 新建一个变量名为 KETTLE_HOME , 变量值为 压缩包解压路径 的环境变量即可
环境和安装都完成后, 我们直接打开kettle解压目录, 运行Spoon.bat文件就可以打开kettle了, 但这才是我遇到问题的开始
1) 如果电脑内存不大的话可能会遇到创建JVM失败的提示(ERROR:could not create the java virtual machine!), 这是因为kettle默认给JVM虚拟机分配的内存比较大, 我们给他调小一点, 打开Spoon.bat, 将
改为
2) 如果遇到提示could not find the main class. Program will exit! 这表示你的jdk有问题, 这不单单是kettle会出现这个提示, 任何java程序如果jdk出现问题, 或者jdk版本不对都有可能报这个错, 我们重新安装一遍jdk或者换个版本就可以解决这个问题.
在kettle这里我们可以单独为kettle配置一个环境变量以解决这个问题, (感觉这个方式是为了解决kettle的jdk版本和当前系统不一样的问题), 在环境变量中创建一个变量名为 PENTAHO_JAVA_HOME , 变量值为 kettle兼容的jdk版本路径 即可.
这个时候我们的系统变量里有两个指向jdk路径的变量, 一个是java_home,一个是pentaho_java_home, 感觉这是为了解决kettle需要的jdk与当前系统中的jdk不一样的办法.
运行Spoon.bat的时候, d出cmd终端窗口, 直接闪退.
遇到这个问题真的是把我给难住了, 一点没有错误信息, 没有排查问题的切入点,
思考 :
.bat文件应该是一个脚本语言, 它调用其他的文件才能启动kettle, 它d出cmd后没有报错而是退出了, 应该是运行的没有问题, 下面它应该启动kettle了, 但是没有动静, 这就可能是它调用其他文件的时候, 其他文件损坏了或者丢失了. 我们重新安装一下这个软件可以排除这个问题.
我最开始觉得解压后的kettle有问题, 把kettle删了, 再删的时候等不及又往桌面解压kettle...虽然没有提示, 但是肯定是这删了点什么文件...后来又重新装了一遍才解决.
解决这种问题的时候 只能靠自己, 千万不能慌, 要稳定心态, 思考启动的流程, 是哪个流程出现了错误, 这样才能解决问题 , 不然会卡很久, 严重降低工作效率. 心态不好的时候, 可以稍微歇5分钟, 计算机这种东西, 说不定重启都能解决bug, 透透气, 换个角度看
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)