[TOC](快速上手kettle二 小試牛刀) ### 一 、前言 上一期中大概介紹了下kettle,並已經把kettle下載安裝完了。 這一期我們就來簡單體驗下kettle怎麼進行數據轉換的。 ### 二 、兩個小目標 我們這裡呢就以兩個小案例來體驗下kettle - 將csv文件通過kettle ...
目錄
一 、前言
上一期中大概介紹了下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常用輸入控制項使用(小編正在玩命更新中)