1. 程式人生 > >在kettle中使用java直接呼叫transformation、job檔案執行

在kettle中使用java直接呼叫transformation、job檔案執行

目前在做一個專案,需要用到資料清洗,因為kettle是開源的,所以就選擇了它。目前遇到的困難是,在建立好轉換(transformation)或任務(job)後,需要整合到java程式碼中,以便和其他功能結合。由於網上很多例子的kettle版本是4.x以及5.0左右的,而kettle 6.0版本較之前有了很大改動,這些java程式碼已經不適合用於kettle 8.0了。經過在網上查資料以及在論壇裡查詢資料和提問之後,終於解決了如何讓java通過kettle 8.0版本呼叫轉換和job。

1,需要哪些jar包

kettle開頭的包都需要,也許這個專案有些包不用,但最好加進去。另外guava、metastore和mysql-connector包也是必須的,不然程式會報錯。其他包自己看著加入吧

2,在spoon上建立轉換或job 在這裡就不敘述了,我有時間會在另一篇部落格中記錄如何使用spoon上的控制元件建立轉換和job。有需要可以看看。

3,java程式碼示例

 
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();
    }
}