Kettle基礎知識學習(一)

Kettle基礎知識學習

作業(Job)

作業是多個轉換任務的集合,通過kitchen.sh來執行

./kichen.sh -file ./YourScirpts/demo.kjb

轉換(Transform)

轉換是某個節點,通過pan.sh“煎鍋”來執行。

./pan.sh -file ./YourScripts/demo.ktr

關係

通過廚房和煎鍋的關係,就可以理解作業和轉換的關係。作業是帶有定時或者循環執行功能的轉換,可以理解爲對轉換的組織和裝配。可以通過作業管理轉換,也可以單獨通過其他的定時任務來管理轉換,比如crontab等。 作業job可以理解爲帶有定時執行功能的轉換,可以對多個轉換進行組織、編排,實現更加強大的功能。

一般來說,簡單的作業,通過轉換就可以完成,不一定要通過job作業。

  • job帶有定時功能的轉換。
  • job可以對轉換進行編排,實現更加複雜和強大的功能
  • 簡單的功能可以通過轉換實現,轉換和作業兩者相互支持,但是,相互獨立。可以只通過轉換完成,也可以將轉換封裝到作業中。
  • 如果用crontab或者java等第三方調用,可以直接使用轉換。

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

  • 作業是步驟流,轉換是數據流。這是作業和轉換最大的區別。
  • 作業的每一個步驟,必須等到前面的步驟都跑完了,後面的步驟纔會執行;而轉換會一次性把所有控件全部先啓動(一個控件對應啓動一個線程),然後數據流會從第一個控件開始,一條記錄、一條記錄地流向最後的控件;
  • 如果想在作業中實現把上一個步驟(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);
  • 作業(Job)由一個個步驟組成,轉換隻是作業的其中一個步驟。

作業、轉換的嵌套關係

  • 作業可以調另一個作業(用General->Job控件),強調的是父作業與子作業;
  • 作業可以調一個轉換(用General->Transformation控件),強調的是其中一個步驟;
  • 轉換可以調一個作業(用Flow->Job Executor控件),執行結果會變成數據流裏的新的一列數據,強調的是執行結果;
  • 轉換可以調另一個轉換(用Flow->Transformation Executor控件),執行結果會變成數據流裏的新的一列數據,強調的是執行結果;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章