java通過kettle的API呼叫已經建立好的轉換(transformation)或任務(job)
阿新 • • 發佈:2019-02-01
目前在做一個專案,需要用到資料清洗,因為kettle是開源的,所以就選擇了它。目前遇到的困難是,在建立好轉換(transformation)或任務(job)後,需要整合到java程式碼中,以便和其他功能結合。由於網上很多例子的kettle版本是4.x以及5.0左右的,而kettle 6.0版本較之前有了很大改動,這些java程式碼已經不適合用於kettle 6.0了。經過在網上查資料、加QQ群詢問以及在論壇裡查詢資料和提問之後,終於解決了如何讓java通過kettle 6.0版本呼叫轉換和job。
1,需要哪些jar包
kettle開頭的包都需要,也許這個專案有些包不用,但最好加進去。另外guava、metastore和mysql-connector包也是必須的,不然程式會報錯。其他包自己看著加入吧
2,在spoon上建立轉換或job
在這裡就不敘述了,我有時間會在另一篇部落格中記錄如何使用spoon上的控制元件建立轉換和job。有需要可以看看。3,java程式碼示例
<span style="font-size:18px;">package com.fan.custom; import org.pentaho.di.core.KettleEnvironment; import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.trans.Trans; import org.pentaho.di.trans.TransMeta; public class ExistTrans { public static void runTransformation() { try { String filename = "C:\\Users\\Francis\\Desktop\\table.ktr"; // StepLoader.init(); // EnvUtil.environmentInit(); KettleEnvironment.init(); TransMeta transMeta = new TransMeta(filename); Trans trans = new Trans(transMeta); trans.execute(null); // You can pass arguments instead of null. trans.waitUntilFinished(); if (trans.getErrors() > 0) { throw new RuntimeException( "There were errors during transformation execution."); } } catch (KettleException e) { // TODO Put your exception-handling code here. System.out.println(e); } } public static void main(String[] args) { runTransformation(); } } </span>