Kettle 中轉換(transformation)的執行過程


1,Spoon.java的main方法是整個Kettle運行的入口。當打開Kettle的設計器界面后,可以在其中設計作業和轉換。這里討論轉換的執行過程。

2,設計好一個轉換后,轉換保存的本地文件是 .ktr文件。從 .ktr文件中可以讀取出該轉換的元數據transMeta。

3,點擊運行按鈕時,觸發監聽器,調用Spoon.java 的runFile() ,在runFile里面調用 executeFile()。在executeFile()里面獲得了transMeta數據。

1  public void executeFile(boolean local, boolean remote, boolean cluster, boolean preview, boolean debug,
2       Date replayDate, boolean safe) {
3 
4     TransMeta transMeta = getActiveTransformation();//在這里得到了transMeta
5      if (transMeta != null)
6       executeTransformation(transMeta, local, remote, cluster, preview, debug, replayDate, safe,
7           transExecutionConfiguration.getLogLevel());

4,再調用executeTransformation(),在該方法里 new Thread,並在線程的run方法里面執行該轉換

 delegates.trans.executeTransformation(transMeta, local, remote, cluster, preview, debug, replayDate,
                  safe, logLevel);

5,最終在 org.pentaho.di.ui.spoon.delegates.SpoonTransformationDelegate.java 的方法executeTransformation(TransMeta, boolean, boolean, boolean, boolean, boolean, Date, boolean, LogLevel)中配置好轉換的參數,以及執行轉換的模式,啟動並執行轉換。

1  else if( executionConfiguration.isExecutingStorm()){
2                 //execute transformation in storm platform
3                 activeTransGraph.startTopology(executionConfiguration);
4             }

這里整合了Storm,可以讓轉換執行在Storm上。

 

總結:transMeta數據是構建轉換的元數據,只要獲得了transMeta,就可以在其它地方重新構建轉換。而transMeta最初是在Spoon.java 的 executeFile() 里面通過 getActiveTransformation()方法獲得。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM