在運營商數據處理領域,Oracle存儲過程一直是數據處理的核心工具,但隨著技術的發展,尋找替代方案變得迫切。Kettle,作為Oracle存儲過程的替代品,以其強大的功能和易用性,正逐漸受到運營商的青睞。本文將介紹Kettle的主要特性、實戰應用,并提供案例分析,以幫助技術決策者了解Kettle的潛力,在面臨類似問題提供寶貴的參考和借鑒。
Kettle,又稱為Pentaho Data Integration,是一款強大的開源ETL(Extract, Transform, Load)工具,旨在幫助用戶高效地處理和轉換數據。
以下是kettle工具的六大特性:

對于那些習慣于使用存儲過程的開發者來說,Kettle工具是一個非常合適的替代方案,總結起來有以下幾點:
多平臺支持:Kettle可在Windows、Linux、Mac OS X等操作系統上運行,便于跨平臺開發。
界面化配置易上手:圖形界面設計讓操作直觀,通過拖放組件構建ETL流程,無需編寫復雜代碼。
適配多種數據源:支持Oracle、MySQL、SQL Server、PostgreSQL等數據庫,以及NoSQL數據庫。
組件豐富功能強:提供大量預定義組件,覆蓋數據處理的各個方面,減少編碼復雜性。

組件庫
調試功能強大:Kettle擁有一個綜合日志系統,可以在執行過程中記錄詳細的信息。綜合日志系統記錄執行細節,可快速定位問題。

日志功能

本章將詳細介紹如何在實際應用中利用Kettle作為Oracle存儲過程的替代方案,進行數據處理與轉換。

實戰步驟
到官網下載對應的安裝包,官網下載地址https://sourceforge.net/projects/pentaho/files/Data%20Integration。
由于是綠色版,下載后直接解壓即可使用。文件目錄結構如下。

文件目錄示意
由于軟件是基于JAVA語言開發的,需要在運行環境中安裝JDK,JDK建議是1.8以上。
最后,點擊運行Spoon.bat運行即可(linux系統下需要運行Spoon.sh)。
界面效果如下:

在Kettle中,數據處理主要通過作業(Job)和轉換(Transformation)來完成,此章節將著重介紹作業和轉換如何進行開發,怎么開展調試工作。

轉換和作業
(1) 轉換開發調試
首先,打開Kettle軟件,并點擊菜單中的“File -> New ->Transformation”來創建一個新的數據轉換。
接著需要配置數據源,不同數據源的配置參數會稍有不同。配置完成后,可以點擊“測試”按鈕進行驗證。

數據源配置
數據源配置完成后,就可以開始依照業務邏輯開始轉換的開發工作了。首先先選擇輸入組件,如表輸入。在彈出對話框中將所需要獲取數據的語句寫入??赏ㄟ^“預覽”按鈕驗證配置的是否正確。

數據庫表獲取范例
接著,可以利用Kettle提供的各種轉換組件,如數據過濾、字段映射、計算字段、連接表等,對數據進行清洗和轉換操作。

表關聯查詢范例
然后,將加工處理好的數據,通過輸出組件沉淀到表或者文件中。

文件輸出范例
這樣就完成一個業務邏輯的開發工作了。最后,可以點擊運行按鈕,進行試運行。Kettle的日志系統會將每個步驟的運行情況以及耗時數據進行展示,方便使用人員進行核查和調試。

(2) 作業開發調試
如果有多個轉換,而且轉換之間有關聯,則可以使用Kettle作業進行管理。
首先,點擊菜單中的“File -> New -> Job”來創建一個新的作業。
接著,在“通用”中選擇一個開始節點,開始節點作為起點。


通用組件
然后,就可以通過“轉換”添加前面開發好的轉換了。

轉換配置
和轉換類似,作業也提供了豐富的組件,可以滿足大部分業務場景。


作業中的組件庫
配置作業參數后,可以運行作業并監控執行過程,確保數據處理順利進行。

作業運行效果
kettle以資源庫的形式存儲所有重要數據指令和規則。它就像是一個信息中心,匯集了所有的作業(jobs)和轉換(transformations)相關的細節。當需要執行某個任務時,Kettle的核心引擎會從這個資源庫中讀取所需的信息,然后按照指令進行操作,這個過程實現了在不同平臺之間的無縫使用。
為了讓每個人都能根據自己的需求選擇適合自己的方式,Kettle提供了兩種保存模式:文件模式和數據庫模式。
無論選擇哪種模式,Kettle的資源庫都提供了一個便捷高效的方式來組織和管理數據處理任務,確保了工作的連貫性和可重復性。
在前面的章節中,已經介紹了如何在Windows平臺上進行開發?,F在,將介紹如何使用開發出的資源在Linux上運行的步驟。
首先,確保Linux環境上有安裝JDK。接著將壓縮包上傳至Linux對應目錄上,進行解壓。
Kettle提供轉換、工作兩種命令啟動方式。
??轉換的命令啟動格式
[opt@zte data-integration]$./pan.sh -rep=my_repo -user=admin -pass=admin -trans=stu1tostu2 -dir=/
參數說明:
-rep 資源庫名稱
-user 資源庫用戶名
-pass 資源庫密碼
-trans 要啟動的轉換名稱
-dir 目錄(不要忘了前綴 /)
??作業的命令啟動格式
[opt@zte data-integration]$./kitchen.sh -rep=my_repo -user=admin -pass=admin -job=jobDemo1 -logfile=./logs/log.txt -dir=/
參數說明:
-rep - 資源庫名
-user - 資源庫用戶名
-pass – 資源庫密碼
-job – job名
-dir – job路徑
-logfile – 日志目錄
渠道酬金系統是第三方渠道為客戶辦理各類運營商產品和服務時,獲得的報酬、獎勵和補貼費用的結算系統。
隨著運營商數據庫國產化的推動,各省面臨了替換Oracle存儲過程的挑戰,因此運維人員急需一種性能高、兼容性強的替代工具。通過研究和分析移動、電信運營商在相關省份的渠道酬金業務,總結出了一些關于Kettle開發流程的思路和方法,這些方法能夠加快各省份在替換存儲過程方面的進展。

此階段的目標是為了整合各個業務場景的關鍵數據,并整合最終酬金系統所需要的匯聚數據結構。這一步驟關鍵在于識別出數據的共通點和差異,以及各個數據的冗余和缺失情況。
首先,從CRM側的https接口協議獲取實時受理信息,分析出系統需求的關鍵信息包括訂單標識、受理人工號、受理時間、受理業務。從計費側梳理以表形式同步的數據為產品實例,其中包含了產品實例標識、用戶號碼、用戶狀態。渠道系統的數據以月度形式同步,同步形式為文件格式,包括渠道信息和渠道員工關系信息。
接著,分析渠道酬金業務結算所需要的關鍵字為,訂單標識、產商品標識、受理號碼、用戶狀態、受理人員工號、受理員工狀態、受理渠道標識、受理渠道名稱、歸屬本地網。將這些字段和各個系統數據源進行字段映射,判斷是否滿足要求。
最后,依照業務場景對數據進行檢查,核對沒有需要擴充的字段后,把基礎業務數據表數據依照業務場景進行整合,形成匯聚數據設計圖。

用戶受理匯聚表設計圖
基于數據匯聚設計圖,設計ETL流程來處理數據抽取、轉換和加載邏輯,并輸出設計方案文檔。方案文檔包含需求分析內容、數據流設計、系統改造三個部分。需求分析章節將業務部門的原始需求進行寫入,并進行分析。數據流設計則是將數據匯聚設計圖寫入,補充表模型以及建表語句。這里著重介紹系統改造部分。
系統改造包含兩個部分,一個是數據源采集設計,即備注清楚CRM、計費、渠道的數據接口協議,以及對應的采集實現邏輯;第二個是將kettle的數據加工邏輯進行設計,主要是表關聯,以及字段轉換設計。由于CRM系統提供的訂單通過https協議實時推送,這里需要單獨設計一套客戶端進行數據沉淀到酬金庫表中。渠道接口的采集由于格式比較簡單,可以直接沿用kettle的文件解析模塊進行承接,如復雜一些的則可能需要單獨開發對應的接口去實現,或者是通過開發kettle的插件實現。

用戶受理匯聚需求設計
開發人員依照需求設計方案,在客戶端上使用kettle進行開發ETL作業,并進行測試。
先配置數據源,用于讀取CRM訂單表和計費資料表數據。接著使用“表輸入”插件,配置設計文檔中定義好的查詢SQL。利用“合并記錄”插件通過產品標識字段將CRM和計費的表數據流進行合并,然后選擇“文本文件輸入插件”,將渠道文件解析格式寫入,再用“合并記錄”插件通過渠道標識字段將渠道數據流和前面的數據流進行合并。將合并的結果最終利用“表輸入”插件,寫入酬金匯聚表。這樣數據加工流程就開發完成了,接著可以進行在線測試,核對并調優。

開發效果圖
為了方便測試,可以使用“過濾記錄”、“寫日志”插件來進行在線調試。如過程中遇到流程問題可跳轉至步驟2核對并修改設計邏輯后,再開發、測試。
在測試驗證無誤后,將ETL作業部署到生產環境。部署過程中,監控作業的執行效率和資源消耗,根據實際運行情況進行性能調優。例如,調整內存配置、優化數據庫連接池設置等。

作業監控表格
運行期間,持續監控ETL作業的性能和數據質量。使用Kettle的日志記錄和監控功能來跟蹤作業執行情況,及時發現并解決運行中的問題。

監控維護表格
隨著數據量的激增和處理需求的不斷升級,Kettle作為一款強大的開源ETL工具,其在數據處理領域的重要性不言而喻。它不僅提供了一個易于使用的平臺,讓技術愛好者能夠快速入門并實踐數據操作,也為專業數據分析師和開發者提供了豐富的功能,以支持復雜的數據處理任務。
Kettle的靈活性、成本效益和社區支持,使其成為Oracle存儲過程的一個強有力的替代方案。它的圖形化界面降低了編程難度,而開源性質又保證了其可持續性和創新能力。
總之,Kettle不僅是一個現在的解決方案,更是一個未來的數據處理平臺。隨著技術的不斷進步,它將繼續適應并滿足不同用戶群體的需求,推動數據處理領域的創新和發展。