1、什么是ETL?
答:ETL(Extract-Transform-Load的縮寫,即數據抽取、轉換、裝載的過程),對於企業或行業應用來說,我們經常會遇到各種數據的處理,轉換,遷移,所以了解並掌握一種etl工具的使用,必不可少,這里我要學習的ETL工具是Kettle!
2、什么是Kettle?
答:Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數據抽取高效穩定。
Kettle 中文名稱叫水壺,該項目的主程序員MATT 希望把各種數據放到一個壺里,然后以一種指定的格式流出。
Kettle這個ETL工具集,它允許你管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。
Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。
Kettle(現在已經更名為PDI,Pentaho Data Integration-Pentaho數據集成)。
3、Kettle的結構。
4、Kettle的結構-Spoon和Data Integration Server。
答:Spoon是構建ETL Jobs和Transformations的工具。Spoon以拖拽的方式圖形化設計,能夠通過spoon調用專用的數據集成引擎或者集群。
Data Integration Server是一個專用的ETL Server,它的主要功能有:
5、Kettle的結構-Enterprise Console。
答:Enterprise Console(企業控制台)提供了一個小型的客戶端,用於管理Pentaho Data Integration企業版的部署。包括企業版本的證書管理、監控和控制遠程Pentaho Data Integration服務器上的活動、分析已登記的作業和轉換的動態績效。
6、kettle的核心組件。
7、Kettle概念模型。Kettle的執行分為兩個層次:Job(作業)和Transformation(轉換)。
8、Kettle的下載。
Kettle官方網址:https://community.hitachivantara.com/s/article/data-integration-kettle,目前最新版本8.2版本的,不建議官網下載,賊慢,壓縮包一個G左右的。
Kettle的國內鏡像:7.1版本,http://mirror.bit.edu.cn/pentaho/Data%20Integration/,8.2版本,http://mirror.bit.edu.cn/pentaho/Pentaho%208.2/client-tools/
9、 Kettle的壓縮包下載完畢,解壓縮即可。Kettle的目錄文件,如下所示:
10、 Kettle的部署,Kettle下載以后需要配置一下環境變量,因為Kettle是純Java開發的哦!
由於Kettle是Java語言開發的,該軟件的允許需要Java運行環境的依賴。需要先安裝JDK,准備好Java軟件的運行環境。安裝jdk1.8版本即可,配置環境變量,這些自己百度一下就行了,不啰嗦了。在Window10環境下,雙擊Spoon.bat即可運行了。
11、Kettle界面簡介。
12、Kettle實現,把數據從CSV文件復制到Excel文件。
首先,創建一個轉換,找到核心對象,找到輸入里面的CVS文件輸入圖元,拖拽到工作區域,雙擊CVS文件輸入。
可以修改步驟的名稱,點擊瀏覽,選擇到CVS文件,其他參數可以默認,點擊獲取字段,最后點擊確定。
CVS文件輸入配置完畢以后,可以配置Excel輸出,如下所示:
此時,可以 按住shift拖動鼠標,划線,將CVS文件輸入和Excel輸出連到一起。
最后,點擊Excel輸出,選擇字段,點擊獲取字段,將輸出到Excel的字段進行映射,最后點擊確定即可。
點擊ctrl + s保存,然后點擊啟動按鈕即可。
13 、Kettle的執行結果。
14、Kettle,可以被稱為可視化編程。
1)、Kettle可以被歸類為可視化編程語言(Visula Programming Languages,VPL),因為Kettle可以使用圖形化的方式定義復雜的ETL程序和工作流。
2)、Kettle里的圖就是轉換和作業。
3)、可視化編程一直是Kettle里的核心概念,它可以讓你快速構建復雜的ETL作業和減低維護工作量。它通過隱藏很多技術細節,使IT領域更貼近於商務領域。
15、Kettle里面的轉換。
1)、轉換(transaformation)是ETL解決方案中最主要的部分,它處理抽取、轉換、加載各種對數據行的操作。
2)、轉換包含一個或多個步驟(step),如讀取文件、過濾數據行、數據清洗或將數據加載到數據庫。
3)、轉換里的步驟通過跳(hop)來連接,跳定義一個單向通道,允許數據從一個步驟向另一個步驟流動。
4)、在Kettle里,數據的單位是行,數據流就是數據行從一個步驟到另一個步驟的移動。
5)、數據流有的時候也被稱之為記錄流。
16、Kettle里面的,Step步驟(控件)是轉換里的基本的組成部分。
一個步驟有如下幾個關鍵特性:
1)、步驟需要有一個名字,這個名字在轉換范圍內唯一。
2)、每個步驟都會讀、寫數據行(唯一例外是"生成記錄"步驟,該步驟只寫數據)。
3)、步驟將數據寫到與之相連的一個或多個輸出跳,再傳送到跳的另一端的步驟。
4)、大多數的步驟都可以有多個輸出跳。一個步驟的數據發送可以被被設置為分發和復制,分發是目標步驟輪流接收記錄,復制是所有的記錄被同時發送到所有的目標步驟。
17、Kettle里面的,Hop跳(即圖元之間的連線)。
1)、跳就是步驟之間帶箭頭的連線,跳定義了步驟之間的數據通路。
2)、跳實際上是兩個步驟之間的被稱之為行集的數據行緩存(行集的大小可以在轉換的設置里定義)。
3)、當行集滿了,向行集寫數據的步驟將停止寫入,直到行集里又有了空間。
4)、當行集空了,從行集讀取數據的步驟停止讀取,直到行集里又有可讀的數據行。
18、Kettle里面的,數據行-數據類型。
數據以數據行的形式沿着步驟移動。一個數據行是零到多個字段的集合,字段包含下面幾種數據類型。
1)、String:字符類型數據
2)、Number:雙精度浮點數。
3)、Integer:帶符號長整型(64位)。
4)、BigNumber:任意精度數據。
5)、Date:帶毫秒精度的日期時間值。
6)、Boolean:取值為true和false的布爾值。
7)、Binary:二進制字段可以包含圖像、聲音、視頻及其他類型的二進制數據。
19、Kettle里面的,數據行-元數據。
每個步驟在輸出數據行時都有對字段的描述,這種描述就是數據行的元數據。通常包含下面一些信息。
1)、名稱:行里的字段名應用是唯一的。
2)、數據類型:字段的數據類型。
3)、格式:數據顯示的方式,如Integer的#、0.00。
4)、長度:字符串的長度或者BigNumber類型的長度。
5)、精度:BigNumber數據類型的十進制精度。
6)、貨幣符號:¥。
7)、小數點符號:十進制數據的小數點格式。不同文化背景下小數點符號是不同的,一般是點(.)或逗號(,)。
8)、分組符號:數值類型數據的分組符號,不同文化背景下數字里的分組符號也是不同的,一般是點(.)或逗號(,)或單引號(’)。
20、Kettle里面的,並行概念。
跳的這種基於行集緩存的規則允許每個步驟都是由一個獨立的線程運行,這樣並發程度最高。這一規則也允許數據以最小消耗內存的數據流的方式來處理。在數據倉庫里,我們經常要處理大量數據,所以這種並發低消耗內存的方式也是ETL工具的核心需求。
對於kettle的轉換,不可能定義一個執行順序,因為所有步驟都以並發方式執行:當轉換啟動后,所有步驟都同時啟動,從它們的輸入跳中讀取數據,並把處理過的數據寫到輸入跳,直到輸入跳里不再有數據,就中止步驟的運行。當所有的步驟都中止了,整個轉換就中止了。 (要與數據流向區分開)
如果你想要一個任務沿着指定的順序執行,那么就要使用后面所講的"作業"!
作者:別先生
博客園:https://www.cnblogs.com/biehongli/
如果您想及時得到個人撰寫文章以及著作的消息推送,可以掃描上方二維碼,關注個人公眾號哦。