Kettle 作業(Job)和 轉換(Transform)


作業(Job)由一個個步驟組成,轉換只是作業的其中一個步驟。

Kettle的控件分為2種:作業(Job)和轉換(Transform)。

對於作業和轉換,重點記住以下3點:

  1. 作業是步驟流,轉換是數據流。這是作業和轉換最大的區別;
  2. 作業的每一個步驟,必須等到前面的步驟都跑完了,后面的步驟才會執行;而轉換會一次性把所有控件全部先啟動(一個控件對應啟動一個線程),然后數據流會從第一個控件開始,一條記錄、一條記錄地流向最后的控件;
  3. 如果想在作業中實現把上一個步驟(trans)的數據流傳給下一個步驟(trans),可以通過在上一個步驟的最后一步使用“Copy rows to result”控件,在下一個步驟的開始第一個控件使用“Get rows from result”,這樣可以實現跨步驟的數據傳遞。或者利用一個文件、數據庫表進行中轉;

關於步驟流和數據流

  步驟就是完成工作的其中一個階段,每個步驟都完成了一件獨立的事情,步驟與步驟之間是獨立的,但有先后順序,步驟的組合可以形成一個工作流。比如我要上學這個工作,需要經過以下步驟:起床、洗刷、吃早餐、出門坐校車、下車去教室。每個步驟之間是有先后關系,按順序組合之后,就完成了“去上學”這個工作;

  數據流是指從輸入控件(Input)到輸出控件(Output)之間的數據流動,針對的是在數據流動過程中的每一行記錄、每一列數據的處理 。比如增加一個字段、對字段A截取前3位得到新的字段B、把字段A、B 串聯成新的字段C,按字段A、B組合,匯總字段C(SELECT C1, C2,SUM(C3) FROM 表 GROUP BY C1, C2);

作業的控件

  • Mail -> Mail:用於發送一份郵件;
  • File Managemeng -> Create a File:用於創建一個文件;
  • Conditions -> File Exists:判斷文件是否存在;
  • Scripting -> SQL:用於執行一段SQL

等等,以上控件都是完成了一項單獨的工作,並不需要我們很細致地指定一條條記錄如何處理。

轉換的控件

  • Input -> Text File Input:加載一個文本文件的記錄,可以指定每個字段的類型、長度、分隔符等;
  • Output -> Text File Output:把記錄寫到一個文本文件,可以指定每個字段的類型、字符集、長度、分隔符、日期格式等;
  • Transform -> Concat Fields:把2個字段合並成一個新的字段;
  • Utility -> Write to log:把每一行記錄的每個字段寫到日志去;

等等,以上控件針對的都是每行記錄、每個字段進行處理,必須要有輸入 -> 輸出,以輸入控件開始,以輸出控件結束。

作業和轉換的嵌套關系

  • 作業可以調另一個作業(用General->Job控件),強調的是父作業與子作業;
  • 作業可以調一個轉換(用General->Transformation控件),強調的是其中一個步驟;
  • 轉換可以調一個作業(用Flow->Job Executor控件),執行結果會變成數據流里的新的一列數據,強調的是執行結果;
  • 轉換可以調另一個轉換(用Flow->Transformation Executor控件),執行結果會變成數據流里的新的一列數據,強調的是執行結果;

 


免責聲明!

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



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