一、Kettle 介紹
在介紹 Kettle
前先了解下什么是 ETL
,ETL
是 Extract-Transform-Load
的縮寫,即數(shù)據(jù) 抽取、轉(zhuǎn)換、裝載 的過程,對于企業(yè)或行業(yè)應(yīng)用來說,經(jīng)常會(huì)遇到各種異構(gòu)數(shù)據(jù)的處理、轉(zhuǎn)換、遷移等操作,這些操作有可能會(huì)面對大量的數(shù)據(jù)和繁瑣的步驟,因此就萌生了一些 ETL
處理工具,市面上常見的ETL
工具有很多,比如Sqoop、DataX、Kettle、Talend
等,本篇文章就主要來介紹下 Kettle
工具。
Kettle
(水壺)是一款國外開源的ETL
工具,現(xiàn)在已經(jīng)更名為PDI
,Pentaho Data Integration-Pentaho
的縮寫,由純 java
編寫,可以在Window、Linux、Unix
上運(yùn)行,綠色無需安裝,數(shù)據(jù)抽取高效穩(wěn)定。它可以處理各種異構(gòu)數(shù)據(jù)庫中的數(shù)據(jù),并且提供了可視化圖形界面的方式進(jìn)行操作,讓你思路主要關(guān)注在如果處理數(shù)據(jù)上,而不是如何實(shí)現(xiàn)處理的過程,特點(diǎn)如下圖介紹:
Kettle
的官網(wǎng)地址如下:
https://community.hitachivantara.com/home
如上圖介紹 ,Kettle
分了兩種腳本文件,transformation
(轉(zhuǎn)換)和 job
(作業(yè)) ,transformation
主要完成對數(shù)據(jù)的處理和轉(zhuǎn)換,job
則完成整個(gè)工作流的控制,一個(gè) job
可以包含多個(gè) transformation
,如下圖所示:
另外在 Kettle
中又包含了 4
個(gè)核心組件,分別如下:
-
勺子(Spoon.bat / Spoon.sh) : 圖像化界面,可以通過圖形化界面交互方式開發(fā)
transformation
和job
。 -
煎鍋(Pan.bat / pan.sh): 可以用命令行的形式執(zhí)行由
Spoon
編輯的transformation
和job
。 -
廚房(Kitchen.bat / kitchen.sh) : 可以使用命令行調(diào)用由
Spoon
編輯好的job
。 -
菜單(Carte.bat / carte.sh) : 一個(gè)輕量級的
Web
容器,用戶建立遠(yuǎn)程ETL Server
。
二、Kettle 安裝
安裝前,需要電腦上已經(jīng)安裝配置好 jdk
環(huán)境,版本建議1.8
及以上。
下載kettle
壓縮包:
https://sourceforge.net/projects/pentaho/files/Pentaho%209.1/
Kettle
為綠色軟件,下載后可以解壓到任意本地路徑,但注意盡量不要帶有中文路徑,不然會(huì)出現(xiàn)意想不到的效果。
其中 Kettle
的目錄說明如下:
三、Kettle 使用基本介紹
雙擊解壓目錄下的 Spoon.bat
即可啟動(dòng)圖形化界面工具,啟動(dòng)過程有點(diǎn)慢耐心等待下,如果啟動(dòng)失敗,可以修改下 JVM
的最堆內(nèi)存的大小, Spoon.bat
文件下:
等待片刻后會(huì)進(jìn)到如下頁面:
在 工具欄/文件/新建 下可以選擇創(chuàng)建一個(gè)轉(zhuǎn)換和作業(yè):
3.1 轉(zhuǎn)換
轉(zhuǎn)換(transaformation
) 主要負(fù)責(zé)數(shù)據(jù)的輸入、轉(zhuǎn)換、校驗(yàn)和輸出等工作。轉(zhuǎn)換由多個(gè)Step
(步驟) 組成,如文本文件輸入,過濾輸出行,執(zhí)行 SQL
等。各個(gè)步驟之間使用 Hop
(跳) 來鏈接。
Step
是轉(zhuǎn)換里的基本的組成部分,比如上面的 CSV文件輸入
和Excel輸出
,一個(gè)Step
有如下幾個(gè)關(guān)鍵特性:
-
Step
需要有一個(gè)名字,這個(gè)名字在同一個(gè)轉(zhuǎn)換范圍內(nèi)唯一。 -
Step
將數(shù)據(jù)寫到與之相連的一個(gè)或多個(gè)輸出Hop
,再傳送到指向的另一端的Step
。 - 大多數(shù)的
Step
都可以有多個(gè)輸出,當(dāng)出現(xiàn)多個(gè)輸出時(shí)可以選擇復(fù)制或分發(fā),復(fù)制是所有的記錄被同時(shí)發(fā)送到所有的目標(biāo)步驟,分發(fā)是目標(biāo)步驟輪流接收記錄:
Hop
是 Step
之間帶箭頭的連線,定義了數(shù)據(jù)的通路。Hop
實(shí)際上是兩個(gè)Step
之間被稱之為行集的數(shù)據(jù)行緩存,行集的大小可以在轉(zhuǎn)換的設(shè)置里定義。當(dāng)行集滿時(shí),向行集寫數(shù)據(jù)的 Step
將停止寫入,直到行集里又有了空間。當(dāng)行集空了,從行集讀取數(shù)據(jù)的 Step
停止讀取,直到行集里又有可讀的數(shù)據(jù)行。
其中轉(zhuǎn)換屬性可以雙擊空白處:
3.2 數(shù)據(jù)元數(shù)據(jù)
每個(gè)步驟在輸出數(shù)據(jù)行時(shí)都有對字段的描述,也就是數(shù)據(jù)行的元數(shù)據(jù)。元數(shù)據(jù)通常包含下面一些信息。
- 名稱:數(shù)據(jù)行里的字段名是唯一的
- 數(shù)據(jù)類型:字段的數(shù)據(jù)類型
-
格式:數(shù)據(jù)顯示的方式,如
Integer
的#、0.00
-
長度:字符串的長度或者
BigNumber
類型的長度 -
精度:
BigNumber
數(shù)據(jù)類型的十進(jìn)制精度 -
貨幣符號:
¥
-
小數(shù)點(diǎn)符號:十進(jìn)制數(shù)據(jù)的小數(shù)點(diǎn)格式。不同文化背景下小數(shù)點(diǎn)符號是不同的,一般是點(diǎn)(
.
)或逗號(,
) -
分組符號:數(shù)值類型數(shù)據(jù)的分組符號,不同文化背景下數(shù)字里的分組符號也是不同的,一般是點(diǎn)(
.
)或逗號(,
)或單引號(’
)
3.3 數(shù)據(jù)的類型
Kettle
中的數(shù)據(jù)區(qū)分了數(shù)據(jù)的類型,類型包含如下幾種:
-
String
:字符類型數(shù)據(jù) -
Number
:雙精度浮點(diǎn)數(shù)。 -
Integer
:帶符號長整型(64
位)。 -
BigNumber
:任意精度數(shù)據(jù)。 -
Date
:帶毫秒精度的日期時(shí)間值。 -
Boolean
:取值為true
和false
的布爾值。 -
Binary
:二進(jìn)制字段可以包含圖像、聲音、視頻及其他類型的二進(jìn)制數(shù)據(jù)。
3.2 作業(yè)
作業(yè) (Job
),負(fù)責(zé)定義一個(gè)完成整個(gè)工作流的控制,比如將轉(zhuǎn)換的結(jié)果發(fā)送郵件給相關(guān)人員。因?yàn)檗D(zhuǎn)換(transformation
)以并行方式執(zhí)行,如果需要一個(gè)串行的調(diào)度工具來執(zhí)行轉(zhuǎn)換,就可以使用作業(yè):
四、Kettle 數(shù)據(jù)處理案例
例如有如下 CSV
數(shù)據(jù),其中字段分別表示:用戶ID、用戶名、性別、成績1、成績2、成績3
:
id,name,sex,grade1,grade2,grade3
1,小明,男,90,80,70
2,小紅,女,91,81,71
3,小蘭,女,92,82,72
4,小愛,女,93,83,73
5,張三,男,94,84,74
6,李四,男,95,85,75
7,王五,男,96,86,76
8,趙六,男,97,87,77
9,小六,男,98,88,78
10,小七,男,99,89,79
現(xiàn)有需求:要求計(jì)算出每個(gè)人的總成績和平均分,將結(jié)果輸出到 Excel
中。
新建一個(gè)轉(zhuǎn)換:
拖入一個(gè) CSV
文件輸入:
雙擊 CSV
文件輸入,選擇 CSV
文件、編碼等:
可以點(diǎn)擊預(yù)覽查看數(shù)據(jù):
下面拖入一個(gè) 計(jì)算器 ,計(jì)算成績總和:
按住 Shift
連接上 CSV
文件輸入和 計(jì)算器:
雙擊計(jì)算器,修改名稱,并指定計(jì)算方式:
此時(shí)可以運(yùn)行下看下計(jì)算結(jié)果:
可以看到已經(jīng)計(jì)算出了總成績,下面計(jì)算平均分?jǐn)?shù)的話還需要一個(gè)常量 3
:
雙擊進(jìn)入修改名稱和指定常量值:
下面再拖一個(gè)計(jì)算器,計(jì)算平均分?jǐn)?shù),參數(shù)如下:
到這可以運(yùn)行下看下結(jié)果:
可以看到已經(jīng)計(jì)算出平均成績了,下面就可以輸出到 Excel
中了,拖入一個(gè) Excel
輸出:
雙擊進(jìn)入修改屬性:
再進(jìn)入到字段下指定輸出的字段,其中 num
字段僅僅是為了計(jì)算用的,這里刪除掉:
最后運(yùn)行轉(zhuǎn)換,到輸出目錄下查看 Excel
中的內(nèi)容:
文章來源:http://www.zghlxwxcb.cn/news/detail-472282.html
已經(jīng)寫入處理后的數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-472282.html
到了這里,關(guān)于ETL工具 - Kettle 介紹及基本使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!