1. 程式人生 > >Kettle 使用教程(1)—入門

Kettle 使用教程(1)—入門

大資料的開發過程中使用的是Kettle為6.1.0版本

簡介

Kettle是一款純Java開發的ETL工具,它是跨平臺的,所以它可以在Window、Linux、Unix上執行。注意什麼是ETL,讀者可以自行百度瞭解,我的理解是將一個數據庫的資料匯入到另外一個數據庫中,當讓這種說法並不嚴謹,因為資料傳輸過程中肯定還有很多轉換步驟。我們可以在它的官網上下載最新的工具包,也可以在Github上面下載Kettle的原始碼。

啟動Kettle介面

我們從官網下載Kettle的壓縮包之後解壓到自己想要的目錄中,我們可以看到Kettle中根目錄叫做data-integration

,開啟這個資料夾我們可以看到很多指令碼,因為我們是在Windows下使用,所以主要關注.bat結尾的指令碼。

上面我標示出了四個主要的.bat檔案,其中Spoon.bat是與使用者介面有關的,我們點選Spoon.bat就可以啟動Kettle的使用者介面了。 (ps:忘記說了,Kettle是Java寫的,所以請務必配置好jdk,不然肯定無法正常使用的)

新建轉換(Transformation)

現在假設我們要新建一個轉換,它實現的功能是將MySQL中的兩張表做Join操作,然後將處理的結果集寫入到目標表中,我們來看看如何實現這些步驟。

  • 我們點選選單欄的檔案->新建->轉換

  • 新建一個轉換之後會開啟一個畫布,我們可以在上面新增步驟(Step)

    在左邊我標紅的地方有很多資料夾,這些資料夾中有很多不同功能的元件,比如我們首先要從源表一中抽取資料,這個步驟在表輸入目錄下,我們可以點選表輸入資料夾來看看。

    這個表輸入元件我們可以直接拖入到右邊的畫布中。

  • 編輯表輸入 雙擊上面的表輸入步驟會彈出下面這個對話方塊

    上面的表輸入對話方塊中有很多可以修改的屬性,有些我也不是很清楚,我將我瞭解到的說明一下吧。 步驟名稱:該屬性應該很好理解,就是該步驟的一個名稱,但要注意的是一個轉換中的步驟名稱應該全域性唯一,不能重複。 資料庫連線:這個我們新建一個數據庫連線,可以選取我們要抽取資料的表 SQL:這個面板中的SQL是根據你資料連線中選中的表動態生成的 記錄數量限制:這個屬性指的是從源表中抽取多少條資料,預設為0表示數量沒有限制,會將源表中所有的資料給抽取出來。

    • 新增JDBC驅動到Kettle的目錄 我這裡連線的是MySQL,所以需要新增MySQL的JDBC驅動,要注意的是,新增驅動之後需要重啟Kettle才能生效。 
  • 新建資料庫連線 點選對話中的新建按鈕

    填寫資料庫連線的一些資訊,並點選測試,看是否連線成功,如果有異常看自己的資訊是否填寫正確,資料庫的驅動是否有問題。

    這一步做好之後點選“獲取SQL查詢語句”,選取我們需要的表。

    選中表之後會有一個提示框出來

    點選是就會在SQL面板中生成新的SQL語句,我的最終顯示結果如下:

    我們可以點選預覽按鈕,預覽一下我們表中的資料。

    這是一個表輸入步驟算是完成了,按照上面的步驟我們再新建一個表輸入步驟,這裡就不再敘述了。

  • 新建記錄集連線

    記錄集連線這個步驟可以實現兩張表的join操作,記錄集連線在連線目錄中,將其拖入到畫布中。

    接著我們要將“表輸入”和“表輸入2”連線到“記錄集連線”這個步驟上,連線兩個步驟的操作方法如下: 按住shift鍵,將滑鼠箭頭移至“表輸入”上,然後按住滑鼠左鍵並將箭頭拖動到記錄集連線上,這是一條連線就可以建立成功。 同理連線“表輸入2”到“記錄集連線”,最終效果如下:

    這是我們在點選“記錄集連線”步驟,編輯相關屬性

    上面的操作很清晰,首先選取第一個步驟,然後選取第二個步驟,接著點選對應步驟的獲取連線欄位,比如我們這裡要選取第一個步驟的s_id欄位,第二個步驟的s_id欄位,兩個表通過這個欄位做inner join操作。 我們可以通過右鍵來刪除不需要的欄位:

    修改好之後點選確定:

*新建表輸出步驟

將表輸入步驟拖入到畫布中,表輸出步驟在輸出目錄中

編輯表輸出步驟

這裡要注意的是,要點選下面的SQL按鈕,他會建立或者修改目標表,如果不點這一步的話因為目標表可能不存在或者欄位不對應會導致資料插入異常。

  • 儲存步驟並執行 點選畫布上的小三角會彈出執行的對話方塊,然後點選啟動,任務就會執行。

執行結果

轉換執行完成之後介面如下所示:

  • 日誌 日誌裡面記錄了一些執行資訊,其中有幾個比較關鍵的輸出資訊: I:表示從表中讀取了多少條資料 O:表示向目標表中寫入了多少條資料 R:從之前的步驟中讀取了多少條資料 W:向下一個步驟寫入了多少條資料 上面的解釋可能比較晦澀,因為這涉及到Kettle的資料流向,在後面的文章中我會結合原始碼進行解釋。

  • 預覽資料 Kettle可以預覽每一個Step的部分資料,方便我們進行檢視步驟之間的執行情況