目錄
- 一 、前言
- 二 、兩個小目標
- 三、 kettle核心概念介紹
- 3.1 轉換
- 3.1.1 步驟(Step)
- 3.1.2 跳(Hop)
- 3.1.3 元素據
- 3.1.4 資料型別
- 3.1.5 并發執行
- 3.2 作業
- 3.1 轉換
- 四、實踐操作
- 4.1 案例1 將csv檔案轉換成excel檔案
- 4.1.1 在kettle中新建一個轉換
- 4.1.2選擇輸入控制元件并設定
- 4.1.3 選擇輸出控制元件并設定
- 4.1.4 按住shift 通過跳將輸入輸出兩步驟連接起來
- 4.1.5 點擊啟動按鈕執行轉換
- 4.1.6查看日志,并檢查是否成功
- 4.2 案列2 將excel檔案匯入MySQL資料庫
- 4.2.1和上面步驟一樣我們需要新建一個轉換
- 4.2.2 新建資料庫連接
- 4.2.3 拖入Excel輸入控制元件并設定
- 4.2.4 拖入表輸出控制元件并設定
- 4.2.5 點擊啟動按鈕進行轉換
- 4.2.6 查看日志并檢查MySQL資料表中是否有資料
- 4.1 案例1 將csv檔案轉換成excel檔案
一 、前言
上一期中大概介紹了下kettle,并已經把kettle下載安裝完了,
這一期我們就來簡單體驗下kettle怎么進行資料轉換的,
二 、兩個小目標
我們這里呢就以兩個小案例來體驗下kettle
- 將csv檔案通過kettle轉換成excel檔案
- 將excel檔案通過kettle寫入到資料庫表中
三、 kettle核心概念介紹
kettle 被稱為可視化編程語言,可以完成復雜的etl作業流,kettle里的代碼就是轉換和作業,
所以呢,我們首先就來說說轉換和作業,
3.1 轉換
從下面截圖中,我們看到轉換包含了很多核心物件,說明其包含了很多功能,后面有得我們學的了(開個玩笑)
| --轉換包含元素 | --轉換核心物件 | |
|---|---|---|
![]() |
![]() |
![]() |
-
轉換(transaformation)負責資料的輸入、轉換、校驗和輸出等,kettle中轉換完成了ETL的全部作業
-
轉換由多個步驟 (Step) 組成,包含各種檔案格式的資料輸入/輸出 (如csv檔案輸入、sql檔案輸出、sql腳本執行、各種查詢等等)
-
如果各個步驟之間需要資料庫操作,我們就需要建立DB連接
-
各個步驟之間使用跳(Hops)來連接,我們可以將跳理解為一條道路,資料有一個步驟(驛站)通過跳(道路)流向下一步驟(驛站)
-
kettle中最小的資料單元是行

3.1.1 步驟(Step)
步驟是轉換里的基本組成部分,上面截圖中包含了兩個步驟
①CSV檔案輸入
②Excel輸出
-
每個步驟都會涉及到讀、寫資料行
-
步驟將資料寫到與之相連的一個或多個輸出跳(hop),再傳送到跳的另一端的步驟
-
大多數的步驟都可以有多個輸出跳,一個步驟的資料發送可以被設定為分發和復制

3.1.2 跳(Hop)
跳是兩個步驟(驛站)之間的道路(帶箭頭的連線)
-
跳是兩個步驟之間的資料行快取
-
當行集滿了,向行集寫資料的步驟將停止寫入,直到行集里又有了空間,
-
當行集空了,從行集讀取資料的步驟停止讀取,直到行集里又有可讀的資料行

可以通過如下方式查看和修改行快取大小
| ①右鍵轉換-->設定 | ② 選擇"雜項"tab頁 |
|---|---|
![]() |
![]() |
3.1.3 元素據
每個步驟在輸出資料行時都有對欄位的描述,這種描述就是資料行的元資料
通常包含下面一些資訊,
①名稱:資料行里的欄位名是唯一的,
②資料型別:欄位的資料型別,
③格式:資料顯示的方式,如Integer的#、0.00,
④長度:字串的長度或者BigNumber型別的長度,
⑤精度:BigNumber資料型別的十進制精度,
⑥貨幣符號:¥
⑦小數點符號:十進制資料的小數點格式,不同文化背景下小數點符號是不同的,一般是點(.)或逗號(,),
⑧分組符號:數值型別資料的分組符號,不同文化背景下數字里的分組符號也是不同的,一般是點(.)或逗號(,)或單引號(’)
這里的輸入檔案十csv格式資料,所以分組符號是逗號","

3.1.4 資料型別
資料以資料行(可以理解為一個表格中的一行) 的形式沿著步驟移動,每個資料行又有多個欄位元素(可以理解為一個單元格)構成
就像在excel中,每個單元格都可以設定資料格式一樣,這里資料行中的欄位也有自己的資料型別.
常見的資料型別有以下幾種
| --資料型別 | --說明 |
|---|---|
String |
字符型別資料 |
Number |
雙精度浮點數 |
Integer |
帶符號長整型(64位) |
BigNumber |
任意精度資料 |
Date |
帶毫秒精度的日期時間值 |
Boolean |
取值為true和false的布林值型別 |
Binary |
二進制欄位可以包含影像、聲音、視頻及其他型別的二進制資料 |

3.1.5 并發執行
我們經常需要處理大量的資料,所以設計了跳這樣的行集快取規則,使得每個步驟就是一個獨立執行緒.所有步驟都以并發方式執行.
當轉換啟動后,所有步驟都同時啟動,從它們的輸入跳中讀取資料,并把處理過的資料寫到輸出跳.
直到輸入跳里不再有資料,就中止步驟的運行,
當所有的步驟都中止了,整個轉換就中止了
如果想要一個任務沿著指定的順序執行,那么就要使用下面所講的“作業”來做流程控制
3.2 作業
負責定義一個完成整個作業流的控制,如將轉換的結果發送郵件給相關人員.
因為轉換(transformation)以并行方式執行,所以必須存在一個串行的調度工具來執行轉換,這就是 Kettle中的作業
四、實踐操作
4.1 案例1 將csv檔案轉換成excel檔案
4.1.1 在kettle中新建一個轉換

4.1.2選擇輸入控制元件并設定
核心物件-->輸入-->CSV檔案輸入 (將控制元件拖入作業區)
| ① 選擇CSV檔案輸入控制元件 | ②將控制元件拖入作業區 |
|---|---|
![]() |
![]() |
| ③ 選擇源檔案 | ④ 檢查csv資料是否正常讀出 |
![]() |
![]() |
4.1.3 選擇輸出控制元件并設定
| ① 選擇Excel輸出控制元件 | ②將控制元件拖入作業區 |
|---|---|
![]() |
![]() |
| ③ 設定輸出檔案名 | |
![]() |
4.1.4 按住shift 通過跳將輸入輸出兩步驟連接起來

4.1.5 點擊啟動按鈕執行轉換

4.1.6查看日志,并檢查是否成功
| ①日志沒報錯 | ②檔案也寫入成功了 |
|---|---|
![]() |
![]() |
4.2 案列2 將excel檔案匯入MySQL資料庫
4.2.1和上面步驟一樣我們需要新建一個轉換

4.2.2 新建資料庫連接
由于案例2需要涉及到MySQL資料庫,所以我們需要建立DB連接
①下載MySQL驅動(需要下載對應版本的) 我用的是MySQL5.7 ,所以這里下載5.1.37 版本驅動
官方地址:https://downloads.mysql.com/archives/c-j/

② 將下載的好的MySQL驅動包放入lib檔案夾下

③新建DB連接

注: 如果沒有下載驅動包或者驅動包版本與MySQL版本不一致,會包如下錯誤

4.2.3 拖入Excel輸入控制元件并設定
① 將Excel輸入控制元件拖入作業區

②設定Excel輸入控制元件




直到點擊預覽記錄后獲取到如下截圖所示資料,說明輸入設定成功了

4.2.4 拖入表輸出控制元件并設定
① 將表輸出控制元件拖入作業區

② 通過跳 將輸入輸出控制元件連接起來

③設定需要匯入資料的目標表

④ 匹配資料庫欄位

4.2.5 點擊啟動按鈕進行轉換

4.2.6 查看日志并檢查MySQL資料表中是否有資料
①日志顯示轉換成功

② 我們再來看看資料庫test的t_tv 表中也有資料了

到此通過兩個案例小試牛刀之后都轉換成功了,是不是有點小成就感呢,
其實這只是kettle工具的冰山一角,從kettle那么多核心物件可以看得出來,它還有很多很多很多得玩法等著我們去開啟,
本期內容到此就結束了,希望內容對你有所幫助,我們下期再見 (●'?'●)
上一篇:快速上手kettle(一)壺之簡介
下一篇:快速上手kettle(三):kettle常用輸入控制元件使用(小編正在玩命更新中)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/553674.html
標籤:大數據
上一篇:Doris(三) -- 索引
下一篇:返回列表














