Kettle能做什么?
簡介?
Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數據抽取高效穩定。
Kettle?中文名稱叫水壺,該項目的主程序員MATT?希望把各種數據放到一個壺里,然后以一種指定的格式流出。??
Kettle這個ETL工具集,它允許你管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。?
Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。?
Kettle可以在http://kettle.pentaho.org/網站下載到。?
? ? 術語
1. Transformation 轉換步驟,可以理解為將一個或者多個不同的數據源組裝成一條數據流水線。然后最終輸出到某一個地方,文件或者數據庫等。
2. Job 作業,可以調度設計好的轉換,也可以執行一些文件處理(比較,刪除等),還可以 ftp 上 傳,下載文件,發送郵件,執行 shell 命令等
3. Hop 連接轉換步驟或者連接 Job(實際上就是執行順序) 的連線 Transformation hop:主要表示數據的流向。從輸入,過濾等轉換操作,到輸出。
? ? ? ?Job hop:可設置執行條件: 1, 無條件執行 ?2, 當上一個 Job 執行結果為 true 時執行 ?3, 當上一個 Job 執行結果為 false 時執行
? ? ?應用場景
-
表視圖模式:這種情況我們經常遇到,就是在同一網絡環境下,我們對各種數據源的表數據進行抽取、過濾、清洗等,例如歷史數據同步、異構系統數據交互、數據對稱發布或備份等都歸屬于這個模式;傳統的實現方式一般都要進行研發(一小部分例如兩個相同表結構的表之間的數據同步,如果sqlserver數據庫可以通過發布/訂閱實現),涉及到一些復雜的一些業務邏輯如果我們研發出來還容易出各種bug;
-
前置機模式:這是一種典型的數據交換應用場景,數據交換的雙方A和B網絡不通,但是A和B都可以和前置機C連接,一般的情況是雙方約定好前置機的數據結構,這個結構跟A和B的數據結構基本上是不一致的,這樣我們就需要把應用上的數據按照數據標準推送到前置機上,這個研發工作量還是比較大的;
-
文件模式: 數據交互的雙方A和B是完全的物理隔離,這樣就只能通過以文件的方式來進行數據交互了,例如XML格式,在應用A中我們開發一個接口用來生成標準格式的XML,然后用優盤或者別的介質在某一時間把XML數據拷貝之后,然后接入到應用B上,應用B上在按照標準接口解析相應的文件把數據接收過來;
? ?kettle的組成
SPOON:允許你通過圖形界面來設計ETL轉換過程(Transformation)。 PAN:允許你批量運行由Spoon設計的ETL轉換 (例如使用一個時間調度器)。Pan是一個后臺執行的程序,沒有圖形界面。 CHEF :允許你創建任務(Job)。 任務通過允許每個轉換,任務,腳本等等,更有利于自動化更新數據倉庫的復雜工作。任務通過允許每個轉換,任務,腳本等等。 KITCHEN:允許你批量使用由Chef設計的任務 (例如使用一個時間調度器)。KITCHEN也是一個后臺運行的程序。? ? ?tips:linux上執行job?kitchen.sh -file=/PRD/updateWarehouse.kjb -level=Minimal
? ? ? ? ? ? ?執行轉換?pan.sh -file=/PRD/updateWarehouse.kjb -level=Minimal
? ?Transformation組件樹介紹
? Transformation中的節點介紹如下:
- Main Tree:菜單列出的是一個transformation中基本的屬性,可以通過各個節點來查看。
- DB連接:顯示當前transformation中的數據庫連接,每一個transformation的數據庫連接都需要單獨配置。
- Steps:一個transformation中應用到的環節列表
- Hops:一個transformation中應用到的節點連接列表?
核心對象菜單列出的是transformation中可以調用的環節列表,可以通過鼠標拖動的方式對環節進行添加。 - Input:輸入環節
- Output:輸出環節
- Lookup:查詢環節
- Transform:轉化環節
- Joins:連接環節
- Scripting:腳本環節
? Job組件樹介紹
Job中的節點介紹如下:
- Main Tree:列出的是一個Job中基本的屬性,可以通過各個節點來查看。?
DB連接:顯示當前Job中的數據庫連接,每一個Job的數據庫連接都需要單獨配置。 - Job entries/作業項目:一個Job中引用的環節列表?
核心對象菜單列出的是Job中可以調用的環節列表,可以通過鼠標拖動的方式對環節進行添加。?
每一個環節可以通過鼠標拖動來將環節添加到主窗口中。?
并可通過shift+鼠標拖動,實現環節之間的連接。
- Main Tree:列出的是一個Job中基本的屬性,可以通過各個節點來查看。?
?經常遇到問題:
1.??如何連接資源庫?
如果沒有則創建資源庫
2.??如何連接數據庫?
在連接數據庫之前,首先需要保證當前在一個transform(轉換)頁面,然后點擊左側選項欄中的“主對象樹”,然后右鍵點擊“DB連接”,選擇“新建”。
當然也可以設置一些其他的連接屬性,如zeroDateTimeBehavior=round&characterEncoding=utf8。
3.??如何解決數據庫連接更新不及時問題?
有時候我們數據庫中的表的字段進行了更新(增加或刪除字段),但是在使用“表輸入”控件的“獲取SQL語句”功能是會發現的到的字段還是原來的字段,這是由于緩存造成的,需要進行緩存清理。
4.??如何解決Unable to read file錯誤?
有時候我們在文件夾中將Job或Transform移動到其他目錄之后,執行時會出現Unable to read file錯誤。然后就進入到了當前Transform的配置頁面。修改配置中的目錄即可。
5.??如何解決tinyint類型數據丟失問題?
在Kettle使用JDBC連接MySQL時,對于表中數據類型為tinyint的字段,讀取時有可能會將其轉為bool類型,這有可能造成數據丟失。例如,有一個叫status名字的tinyint類型字段,取值有三種:0、1、2。kettle讀取之后很可能將0轉為false,1、2都轉為true。輸出時,將false轉為0,true轉為1,這樣就會造成元數據中status為2的數據被錯誤的賦值為1。
解決這個問題時,可以在讀取元數據時將status轉為int或char。比如SELECT CAST(status as signed) as status FROM <table_name>或SELECT CAST(status as char) as status FROM <table_name>
總結
以上是生活随笔為你收集整理的Kettle能做什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 投资理财的方式有哪些?
- 下一篇: kettle的基本介绍