大數據之ETL工具Kettle的--1功能介紹

 

  Kettle是一款國外開源的ETL工具,純java編寫,能夠在Window、Linux、Unix上運行。 java

  說白了就是,頗有必要去理解通常ETL工具必備的特性和功能,這樣才更好的掌握Kettle的使用。我這裏啊,先描述ETL工具的通用功能,再來描述做爲ETL工具其中的一種(Kettle)是如何來提供這些功能的(圖文詳解)數據庫

 

 

ETL工具的功能之一:鏈接編程

  任何ETL工具都應該有能力鏈接到類型普遍的數據源和數據格式。對於最經常使用的關係型數據庫系統,還要提供本地的鏈接方式(如對於Oracle的OCI),ETL應該能提供下面最基本的功能:架構

  (1)鏈接到普通關係型數據庫並獲取數據,如常見的Orcal、MS SQL Server、IBM DB/二、Ingres、MySQL和PostgreSQL。還有不少不少併發

  (2)從有分隔符和固定格式的ASCII文件中獲取數據函數

  (3)從XML文件中獲取數據工具

  (4)從流行的辦公軟件中獲取數據,如Access數據庫和Excel電子表格  post

  (5)使用FTP、SFTP、SSH方式獲取數據(最好不用腳本)測試

  (6)還能從Web Services 或 RSS中獲取數據。若是還須要一些ERP系統裏的數據,如Oracle E-Business Suite、SAP/R三、PeopleSoft 或 JD/Edwards,ETL工具也應該提供到這些系統的鏈接。大數據

   (7)還能提供Salesforce.com和SAP/R3的輸入步驟,但不是套件內,須要額外安裝。對於其餘ERP和財務系統的數據抽取還須要其餘解決方案。固然,最通用的方法就是要求這些系統導出文本格式的數據,將文本數據做爲數據源。

 

 

 

 

 

ETL工具的功能之二:平臺獨立

  一個ETL工具應該能在任何平臺下甚至是不一樣平臺的組合上運行。一個32位的操做系統可能在開發的初始階段運行很好,可是當數據量愈來愈大時,就須要一個更強大的操做系統。另外一種狀況,開發通常是在Windows或 Mac機上運行的。而生產環境通常是Linux系統或集羣,你的ETL解決方案應該能夠無縫地在這些系統間切換。

 

 

 

 

 ETL工具的功能之三:數據規模

  通常ETL能經過下面的3種方式來處理大數據。

  併發:ETL過程可以同時處理多個數據流,以便利用現代多核的硬件架構。

  分區:ETL可以使用特定的分區模式,將數據分發到併發的數據流中。

  集羣:ETL過程可以分配在多臺機器上聯合完成。

 

 

 

 

  Kettle是基於Java的解決方案,能夠運行在任何安裝了Java虛擬機的計算機上(包括Windows、Linux和Mac)。轉換裏的每一個步驟都是以併發的方式來執行,而且能夠執行屢次,這樣加快了處理速度。

  Kettle在運行轉換時,根據用戶的設置,能夠將數據以不一樣的方式發送到多個數據流中(有兩種幾本發送方式:分發和複製)。分發相似與分發撲克牌,以輪流的方式將每行數據只發給一個數據流,複製是將每行數據發給全部數據流。

  爲了更精確控制數據,Kettle還使用了分區模式,經過分區能夠將同一特徵的數據發送到同一個數據流。這裏的分區只是概念上相似於數據庫的分區。

   Kettle並無針對數據庫分區有什麼功能。

   至於Kettle的擴展集羣,這個很簡單理解,很少贅述。

 

 

 

 

 

 ETL工具的功能之四:設計靈活性

  一個ETL工具應該留給開發人員足夠的自由度來使用,而不能經過一種固定的方式來限制用戶的創造力和設計的需求。ETL工具能夠分爲基於過程的和基於映射的。

  基於映射的功能只在源數據和目的數據之間提供了一組固定的步驟,嚴重限制了設計工做的自由度。基於映射的工具通常易於使用,可快速上手,可是對於更復雜的任務,基於過程的工具纔是組好的選擇。

   使用Kettle這樣基於過程的工具,根據實際的數據和也許需求,能夠建立自定義的步驟和轉換。

 

 

 

 

 

  ETL工具的功能之五:複用性

  設計完的ETL轉換應該能夠被複用,這是很是重要的。複製和粘貼已經存在的轉換步驟是最多見的一種複用,但這不是真正意義上的複用。

  Kettle裏有一個映射(子轉換)步驟,能夠完成轉換的複用,該步驟能夠將一個轉換做爲其餘轉換的子轉換。另外轉換還能夠在多個做業裏屢次使用,一樣做業也能夠爲其餘做業的子做業。

 

 

 

 

 

 

 ETL工具的功能之六:擴展性

  你們都知道,幾乎全部的ETL工具都提供了腳本,以編程的方式來解決工具自己不能解決的問題。另外,還有少數幾款ETL工具能夠經過API或其餘方式爲工具增長組件。使用腳本語言寫函數,函數能夠被其餘轉換或腳本調用。

  Kettle提供了上述的全部功能。Java腳本步驟能夠用來開發Java腳本,把這個腳本保存爲一個轉換,再經過映射(子轉換)步驟,又能夠變爲一個標準的能夠複用的函數。實際上,並不限於腳本,每一個轉換均可以經過這種映射(子轉換)方式來複用,如同建立了一個組件。Kettle在設計上就是可擴展的,它提供了一個插件平臺。這種插件架構容許第三方爲Kettle平臺開發插件。

  你們要清楚,Kettle裏的全部插件,即便是默認提供的組件,實際上也都是插件。內置的第三方插件和Pentaho插件的惟一區別就是技術支持。

  假設你買了一個第三方插件(例如一個SugarCRM的鏈接),技術支持由第三方提供,而不是由Pentaho提供。

 

 

 

 

 

 ETL工具的功能之七:數據轉換

   ETL項目很大一部分工做都是在作數據轉換。在輸入和輸出之間,數據要通過校驗、鏈接、分隔、合併、轉置、排序、合併、克隆、排重、過濾、刪除、替換或者其餘操做。在不一樣機構、項目和解決方案裏,數據轉換的需求都大不相同,因此很難說清一個ETL工具最少應該提供哪些轉換功能。可是呢,經常使用的ETL工具(包括Kettle)都提供了下面一些最基本的整合功能:

    緩慢變動維度    

    查詢值

    行列轉換

    條件分隔

    排序、合併、鏈接

    彙集

 

 

 

ETL工具的功能之八:測試和調試

  這個很簡單,很少贅述,後續博客有實戰。

 

 

 

 

 

 

ETL工具的功能之九:血統分析和影響分析

  任何ETL工具都應該有一個重要的功能:讀取轉換的元數據,它是提取由不一樣轉換構成的數據流的信息。

  血統分析和影響分析是基於元數據的兩個相關的特性。

  血統是一種回溯性的機制,它能夠查看到數據的來源。

  影響分析是基於元數據的另外一種分析方法,能夠分析源數據對隨後的轉換以及目標表的影響。

 

 

 

 

 ETL工具的功能之十:日誌和審計

   數據倉庫的目的就是要提供一個準確的信息源,所以數據倉庫裏的數據應該是可靠的、可信任的。爲了保證這陣可靠性,同時保證能夠記錄下全部的數據轉換操做,ETL工具應該提供日誌和審計功能。

     日誌能夠記錄下在轉換過程當中執行了哪些步驟,包括每一個步驟開始和結束時間戳。

     審計能夠追蹤到對數據作的全部操做,包括讀行數、轉換行數、寫行數。

相關文章
相關標籤/搜索