1.kettle簡介
kettle簡介
ETL(Extract-Transform-Load的縮寫,即數(shù)據(jù)抽取毒租、轉(zhuǎn)換悴侵、裝載的過程),對(duì)于企業(yè)或行業(yè)應(yīng)用來說肖揣,我們經(jīng)常會(huì)遇到各種數(shù)據(jù)的處理民假,轉(zhuǎn)換,遷移许饿,所以了解并掌握一種etl工具的使用阳欲,必不可少,這里我要學(xué)習(xí)的ETL工具是Kettle陋率!
Kettle是一款國外開源的ETL工具玫坛,純java編寫附帽,可以在Window斥废、Linux修己、Unix上運(yùn)行,綠色無需安裝菩浙,數(shù)據(jù)抽取高效穩(wěn)定巢掺。
Kettle 中文名稱叫水壺,該項(xiàng)目的主程序員MATT 希望把各種數(shù)據(jù)放到一個(gè)壺里劲蜻,然后以一種指定的格式流出陆淀。
Kettle這個(gè)ETL工具集,它允許你管理來自不同數(shù)據(jù)庫的數(shù)據(jù)先嬉,通過提供一個(gè)圖形化的用戶環(huán)境來描述你想做什么轧苫,而不是你想怎么做。
Kettle中有兩種腳本文件疫蔓,transformation和job含懊,transformation完成針對(duì)數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換身冬,job則完成整個(gè)工作流的控制。
Kettle(現(xiàn)在已經(jīng)更名為PDI岔乔,Pentaho Data Integration-Pentaho數(shù)據(jù)集成)酥筝。
Kettle在數(shù)倉的使用場景如下圖所示:
kettle的結(jié)構(gòu)
Kettle的結(jié)構(gòu)-Spoon和Data Integration Server
Spoon是構(gòu)建ETL Jobs和Transformations的工具。Spoon以拖拽的方式圖形化設(shè)計(jì)雏门,能夠通過spoon調(diào)用專用的數(shù)據(jù)集成引擎或者集群嘿歌。
Data Integration Server是一個(gè)專用的ETL Server,它的主要功能有:
Kettle的結(jié)構(gòu)-Enterprise Console
Enterprise Console(企業(yè)控制臺(tái))提供了一個(gè)小型的客戶端茁影,用于管理Pentaho Data
Integration企業(yè)版的部署搅幅。
包括企業(yè)版本的證書管理、監(jiān)控和控制遠(yuǎn)程Pentaho Data Integration服務(wù)器上的活動(dòng)呼胚、分析已登記的作業(yè)和轉(zhuǎn)換的動(dòng)態(tài)績效。
kettle的組成部分
kettle模型概念
Kettle的執(zhí)行分為兩個(gè)層次:Job(作業(yè))和Transformation(轉(zhuǎn)換)息裸。
簡介總結(jié)
1.ETL是數(shù)據(jù)抽取蝇更、轉(zhuǎn)換、加載呼盆。
2.Spoon是圖形界面接口年扩。
3.Kettle包含job和transformation兩種腳本。
2.Kettle下載
下載網(wǎng)址:https://community.hitachivantara.com/docs/DOC-1009855
Kettle目錄文件
3.Kettle部署
安裝JDK
由于Kettle是Java語言開發(fā)的访圃,該軟件的允許需要Java運(yùn)行環(huán)境的依賴厨幻。
需要先安裝JDK,準(zhǔn)備好Java軟件的運(yùn)行環(huán)境。
配置環(huán)境變量
JAVA_HOME:JDK的安裝目錄
KETTLE_HOME:kettle的解壓目錄
運(yùn)行
4.Kettle界面簡介
工具欄
工具圖標(biāo)
樹形列表
工作區(qū)
5.Kettle快速體驗(yàn)
把數(shù)據(jù)從CSV文件復(fù)制到Excel文件
分析
轉(zhuǎn)換控件
CSV文件輸入
Excel輸出
轉(zhuǎn)換文件
運(yùn)行
6.執(zhí)行結(jié)果
日志
步驟度量
Metrics
Preview data
7.Kettle核心概念
可視化編程
轉(zhuǎn)換
步驟
跳
數(shù)據(jù)行
并行
可視化編程
Kettle可以被歸類為可視化編程語言(Visula Programming Languages,VPL),因?yàn)镵ettle可以使用圖形化的方式定義復(fù)雜的ETL程序和工作流腿时。
Kettle里的圖就是轉(zhuǎn)換和作業(yè)况脆。
可視化編程一直是Kettle里的核心概念,它可以讓你快速構(gòu)建復(fù)雜的ETL作業(yè)和減低維護(hù)工作量批糟。它通過隱藏很多技術(shù)細(xì)節(jié)格了,使IT領(lǐng)域更貼近于商務(wù)領(lǐng)域。
轉(zhuǎn)換
轉(zhuǎn)換(transaformation)是ETL解決方案中最主要的部分徽鼎,它處理抽取盛末、轉(zhuǎn)換、加載各種對(duì)數(shù)據(jù)行的操作否淤。
轉(zhuǎn)換包含一個(gè)或多個(gè)步驟(step)悄但,如讀取文件、過濾數(shù)據(jù)行石抡、數(shù)據(jù)清洗或?qū)?shù)據(jù)加載到數(shù)據(jù)庫檐嚣。
轉(zhuǎn)換里的步驟通過跳(hop)來連接,跳定義一個(gè)單向通道汁雷,允許數(shù)據(jù)從一個(gè)步驟向另一個(gè)步驟流動(dòng)净嘀。
在Kettle里报咳,數(shù)據(jù)的單位是行,數(shù)據(jù)流就是數(shù)據(jù)行從一個(gè)步驟到另一個(gè)步驟的移動(dòng)挖藏。
數(shù)據(jù)流有的時(shí)候也被稱之為記錄流暑刃。
Step步驟
步驟(控件)是轉(zhuǎn)換里的基本的組成部分。
快速入門的案例中就存在兩個(gè)步驟膜眠,“CSV文件輸入”和“Excel輸出”岩臣。
一個(gè)步驟有如下幾個(gè)關(guān)鍵特性:
①步驟需要有一個(gè)名字,這個(gè)名字在轉(zhuǎn)換范圍內(nèi)唯一宵膨。
②每個(gè)步驟都會(huì)讀架谎、寫數(shù)據(jù)行(唯一例外是“生成記錄”步驟,該步驟只寫數(shù)據(jù))辟躏。
③步驟將數(shù)據(jù)寫到與之相連的一個(gè)或多個(gè)輸出跳谷扣,再傳送到跳的另一端的步驟。
④大多數(shù)的步驟都可以有多個(gè)輸出跳捎琐。一個(gè)步驟的數(shù)據(jù)發(fā)送可以被被設(shè)置為分發(fā)和復(fù)制会涎,分發(fā)是目標(biāo)步驟輪流接收記錄,復(fù)制是所有的記錄被同時(shí)發(fā)送到所有的目標(biāo)步驟瑞凑。
分發(fā):
復(fù)制:
Hop跳
跳就是步驟之間帶箭頭的連線末秃,跳定義了步驟之間的數(shù)據(jù)通路。
跳實(shí)際上是兩個(gè)步驟之間的被稱之為行集的數(shù)據(jù)行緩存(行集的大小可以在轉(zhuǎn)換的設(shè)置里定義)籽御。
當(dāng)行集滿了练慕,向行集寫數(shù)據(jù)的步驟將停止寫入,直到行集里又有了空間技掏。
當(dāng)行集空了铃将,從行集讀取數(shù)據(jù)的步驟停止讀取,直到行集里又有可讀的數(shù)據(jù)行哑梳。
數(shù)據(jù)行-數(shù)據(jù)類型
數(shù)據(jù)以數(shù)據(jù)行的形式沿著步驟移動(dòng)麸塞。一個(gè)數(shù)據(jù)行是零到多個(gè)字段的集合,字段包含下面幾種數(shù)據(jù)類型涧衙。
①String:字符類型數(shù)據(jù)
②Number:雙精度浮點(diǎn)數(shù)哪工。
③Integer:帶符號(hào)長整型(64位)。
④BigNumber:任意精度數(shù)據(jù)弧哎。
⑤Date:帶毫秒精度的日期時(shí)間值雁比。
⑥Boolean:取值為true和false的布爾值。
⑦Binary:二進(jìn)制字段可以包含圖像撤嫩、聲音偎捎、視頻及其他類型的二進(jìn)制數(shù)據(jù)。
數(shù)據(jù)行-元數(shù)據(jù)
每個(gè)步驟在輸出數(shù)據(jù)行時(shí)都有對(duì)字段的描述,這種描述就是數(shù)據(jù)行的元數(shù)據(jù)茴她。
通常包含下面一些信息寻拂。
①名稱:行里的字段名應(yīng)用是唯一的。
②數(shù)據(jù)類型:字段的數(shù)據(jù)類型丈牢。
③格式:數(shù)據(jù)顯示的方式祭钉,如Integer的#、0.00己沛。
④長度:字符串的長度或者BigNumber類型的長度慌核。
⑤精度:BigNumber數(shù)據(jù)類型的十進(jìn)制精度。
⑥貨幣符號(hào):¥
⑦小數(shù)點(diǎn)符號(hào):十進(jìn)制數(shù)據(jù)的小數(shù)點(diǎn)格式申尼。不同文化背景下小數(shù)點(diǎn)符號(hào)是不同的垮卓,一般是點(diǎn)(.)或逗號(hào)(,)师幕。
⑧分組符號(hào):數(shù)值類型數(shù)據(jù)的分組符號(hào)粟按,不同文化背景下數(shù)字里的分組符號(hào)也是不同的,一般是點(diǎn)(.)或逗號(hào)(霹粥,)或單引號(hào)(’)
并行
跳的這種基于行集緩存的規(guī)則允許每個(gè)步驟都是由一個(gè)獨(dú)立的線程運(yùn)行钾怔,這樣并發(fā)程度最高。這一規(guī)則也允許數(shù)據(jù)以最小消耗內(nèi)存的數(shù)據(jù)流的方式來處理蒙挑。在數(shù)據(jù)倉庫里,我們經(jīng)常要處理大量數(shù)據(jù)愚臀,所以這種并發(fā)低消耗內(nèi)存的方式也是ETL工具的核心需求忆蚀。
對(duì)于kettle的轉(zhuǎn)換,不可能定義一個(gè)執(zhí)行順序姑裂,因?yàn)樗胁襟E都以并發(fā)方式執(zhí)行:當(dāng)轉(zhuǎn)換啟動(dòng)后馋袜,所有步驟都同時(shí)啟動(dòng),從它們的輸入跳中讀取數(shù)據(jù)舶斧,并把處理過的數(shù)據(jù)寫到輸入跳欣鳖,直到輸入跳里不再有數(shù)據(jù),就中止步驟的運(yùn)行茴厉。當(dāng)所有的步驟都中止了泽台,整個(gè)轉(zhuǎn)換就中止了。 (要與數(shù)據(jù)流向區(qū)分開)
如果你想要一個(gè)任務(wù)沿著指定的順序執(zhí)行矾缓,那么就要使用后面所講的“作業(yè)”怀酷!