首頁>技術>

前題

ETL是將業務系統的資料經過抽取、清洗轉換之後載入到資料倉庫的過程,目的是將企業中的分散、零亂、標準不統一的資料整合到一起,為企業的決策提供分析依據。 ETL是BI專案重要的一個環節。通常情況下,在BI專案中ETL會花掉整個專案至少1/3的時間,ETL設計的好壞直接關係到資料專案的成敗。

ETL,是英文Extract-Transform-Load的縮寫,抽取(extract)、轉換(transform)、載入(load)至目的端的過程。ETL一詞較常用在資料倉庫,但應用物件並不限於資料倉庫。

選擇

市場上有很多做商業ETL的公司,各有亮點,但是也價格不菲!如果站在公司需求的角度,尋找一款能夠把公司周邊資料的ETL相關工作都解決的商業ETL產品,成本估計要100W左右。本著能省則省的原則,咱們琢磨一下開源ETL工具。

開源ETL

開源ETL工具很多,每個產品解決產品所提供特性和側重解決的問題點也有很多不同,具體要結合業務場景進行選擇。推薦幾個使用比較多的ETL產品,如下:Datax、Sqoop、StreamSets、talend 、Kettle、Apache Airflow 、KETL本次不對以上元件展開介紹,如果想了解可以自行搜尋,網路上有不少相關文件。

我們的選擇

DataX :完成大資料、多資料來源抽取:穩定、高效、強勁Kettle:資料外掛豐富,可以單獨部署到資料使用人員終端電腦,完成資料平臺周邊瑣碎任務,降低資料進入資料倉庫門檻。備註:Kettle現在已經更名為PDI,Pentaho Data Integration-Pentaho資料整合。

什麼是Kettle

翻譯成中文名稱應該叫水壺,開發者希望把各種資料放到一個壺裡然後以一種指定的格式流出。另外官方介紹說kettle 能獨立打造 " E.T.T.L " 環境(Extraction, Transformation, Transportation and Loading of data),就是想說比傳統要牛B。

其它

開發語言:純Java編寫執行環境:Windows、linux、Unix;支援版本:一種是社群版(免費),一種是企業版(收費)

Kettle:四大核心元件

Chef:廚師、Kitchen:廚房、Spoon:勺子、Pan:平底鍋

剛開始理解稍微有點繞,別急!實戰中慢慢領悟。

概念模型Kettle的執行分為兩個層次:

1:Job(作業)2:Transformation(轉換)

概念簡介兩者的區別:

1:作業是步驟流,轉換是資料流。這是作業和轉換最大的區別。2:作業的每一個步驟,必須等到前面的步驟都跑完了,後面的步驟才會執行;而轉換會一次性把所有控制元件全部先啟動(一個控制元件對應啟動一個執行緒),然後資料流會從第一個控制元件開始,一條記錄、一條記錄地流向最後的控制元件;

作業特點:

作業job可以理解為帶有定時執行功能的轉換,可以對多個轉換進行組織、編排,實現更加強大的功能。一般來說,簡單的作業,透過轉換就可以完成,不一定要透過job作業。1:job帶有定時功能的轉換。2:job可以對轉換進行編排,實現更加複雜和強大的功能3:簡單的功能可以透過轉換實現,轉換和作業兩者相互支援,但是,相互獨立。可以只通過轉換完成,也可以將轉換封裝到作業中。

生成檔案區別

作業指令碼的字尾是:kjb轉換指令碼的字尾是:ktr

周邊其它概念

Kettle 周邊還有幾個小概念,簡單瞭解一下:

Steps(步驟)

是轉換的子模組,比如一個文字檔案輸入或者一個表輸出就是一個步驟。在Kettle/PDI中有140多個步驟,按不同功能進行分類,比如輸入類、輸出類、指令碼類等。每個步驟用於完成某種特定的功能,透過配置一系列的步驟就可以完成你所需要完成的任務。

Hops(節點連線)

是資料的通道,用於連線兩個步驟,使得元資料從一個步驟傳遞到另一個步驟。節點連線決定了貫穿在步驟之間的資料流,步驟之間的順序不是轉換執行的順序。當執行一個轉換時,每個步驟都以自己的執行緒啟動,並不斷地接受和推送資料。

注意:所有的步驟是同步開啟和執行的,步驟初始化的順序是不可知的。因為不能在第一個步驟中設定一個變數,然後在接下來的步驟中使用它。

在一個轉換中,一個步驟可以有多個連線,資料流可以從一個步驟流到多個步驟。在Spoon中hops就像箭頭,它不僅允許資料從一個步驟流向另一個步驟,也決定了資料流的方向和所經步驟。如果一個步驟的資料輸出到了多個步驟,那麼資料既可以是複製的,也可以是分發的。

變數(Variable)

根據變數的作用域,變數被分為兩類:環境變數和kettle變數。環境變數可以透過edit menu下面的set environment variables對話方塊進行設定。使用環境變數的唯一問題是它不能被動態地使用。如果在同一個應用伺服器中執行兩個或多個使用同一環境變數的轉換,將可能發生衝突。環境變數在所有使用jvm的應用中可見。

Kettle變數用於在一個小的動態範圍記憶體儲少量的資訊。Kettle變數是kettle本地的,作用範圍可以是一個工作或轉換,在工作或轉換中可以設定或修改。Set variable步驟用來設定與此變數有關的工作從此設定其作用域,如:父工作、祖父工作或根工作。

我們最終的選擇

一圈測下來,我們覺得kettle整體體驗不錯,能夠滿足我們對ETL的功能期望。但是測期間發現,有中國團隊將kettle進行了二次開發和大力最佳化,將kettle的易用性、穩定性進行了大幅提升,外掛也做了不少增強,他的名字叫Ckettle ,所以隨後果斷選擇了 Ckettle 。Ckettle 平臺基於Kettle8.0,強大的資料整合功能與生俱來,專注服務國內ETL環境,對工具全面漢化,提供詳細的幫助文件及可靠的技術支援,公司致力打造全方位的CKettle使用與交流生態圈。

CKettle和Kettle的區別

1.全方位漢化整個客戶端和外掛;2.對現有外掛進行最佳化和功能增強;3.熱插拔:所有外掛可以在執行狀態下載入與解除安裝,外掛包含步驟、入口、資料庫連線等,後續還將增強多版本支援;4.加強Web端的排程功能;5.減小軟體包的大小,同時加快執行速度;6.提供線上的外掛商店,為更多的開發者提供知識變現的渠道,同時也豐富了CKettle的功能支援;7.更可根據使用者的需求增強其他個性化的功能。

參考資訊

https://my.oschina.net/peakfang/blog/2056426https://ckbbs.ccsaii.com.cn/forum/faq_detail?id=16https://cloud.tencent.com/developer/article/1585297http://www.xuexidashuju.com/kettle/kettle-install-usage/https://ckbbs.ccsaii.com.cn/forum/faq_detail?id=16

25
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Arduino,FPGA,微控制器,STM32MSP430區別