文/郭承湘 陳碩峰 吳帥 陳寧江
已有研究和開發工作表明,在開發與食品安全監管數據相關的一系列系統時,基本上都是針對單個業務域進行設計的,而這些系統之間并沒有統一的標準,從而導致了各個部門之間的協同辦公產生了障礙。在此情況下,只有將這些數據集中起來,建立統一標準創建數據倉庫,完成數據共享,這樣才能更準確、有效的對過往的數據進行分析,并進行一定時間長度上的預測和預警,為預判以后的事態發展以及做出相應的決策提供依據。
ETL(Extract-Transform-Load)是 對 異構數據進行集成的有效方法,根據國內外眾多實踐得到的共識,ETL規則的設計和實施所需工作量約占整個項目的60%~80%,如何設計正確的、高效的ETL過程已經成為數據集成構建過程中的重要問題[6]。目前主流的ETL工 具 有IBM DataStage、Informatica Powercenter、開 源 的Kettle等。DataStage能夠連接多種類別的數據源,還可以處理文本文件和XML文件,但它并沒有真正的recovery機制,并且元數據信息是不公開的。Informatica PowerCenter能夠訪問并集成幾乎任何業務系統和任何格式的數據,并能以任意速度進行數據交付,具有高可擴展性、高可用性、高性能的優點。而且可實現斷點續傳的功能,支持多用戶操作,具有并行運行能力。
Kettle是一款使用Java編寫的開源ETL工具,具備豐富的SDK,并且開放源碼,可以進行二次開發。其對于千萬級以下數據的處理效率高于上述兩個ETL工具,更加適合本文的研究。因此本文選擇ETL開源產品中應用最廣泛的Kettle作為核心,研究分析基于Kettle的食品監管數據匯集處理。

圖1:數據處理系統框架

圖2:食品餐飲違規問題事實表設計

圖3:笛卡爾集算法實現字段編碼
本文首先在已經做了全量ETL的基礎上,增量數據處理模型用于定期的數據抽取,該部分在抽取時只抽取改變的部分。
2.1.1 數據處理系統框架
基于kettle的安全數據匯集處理系統,從總體架構上分為三個層次:管理調度層、應用功能層、控制環境。
通過管理調度,管理員可根據數據的更新周期,制定數據的ETL時刻表,然后管理員參照時刻表設置Kettle的作業調度功能,進行ETL作業運行時刻設置;ETL功能模塊層次中包含實現圖1中應用功能模塊每個ETL步驟的程序;ETL功能模塊的運行需要由相應的參數進行控制,同時在各模塊之間也存在很多控制文件,功能模塊在運行過程中也可能產生拒絕文件,針對功能模塊的運行狀況會有產生一些監控信息等等,這些對于ETL功能模塊的運行起到控制與支撐的環境以及相應的維護管理程序構成ETL架構環境。
2.2.1 增量數據處理模型
本文將食品安全抽檢系統中的檢驗結果數據匯集到數據倉庫,按照時間維度(月、季度、年)、檢驗目的、抽檢環節、食品類別、檢驗項目五個維度對檢驗結果值進行分析,從而了解抽檢樣品的檢驗結果值是否超出允許閥。
因為源庫中的業務數據中存入的都是用中文,例如抽樣地點、檢驗機構等都沒有用編碼的方式生產維表,所以在ETL過程中需要對可編碼的數據進行編碼,建立索引,并配置維表,從而提升數據分析時的計算效率。編碼后的分類數據均有分類代碼,目標表與維表使用分類代碼進行映射,圖2為部分目標表設計。
如圖3所示利用笛卡爾集表關聯的方式對源數據中的檢驗項目、食品類別、抽樣地點、檢驗機構進行編碼,替換原來的中文為對應的維表的代碼。并對填充內容為空的數據進行排除,寫入ETL清洗過程流失數據表。
2.2.2 增量ETL的KETTLE實現
2.2.2.1 Job文件設計
如圖4所示,首先獲取本次抽取的起始時間寫入緩存,然后設置本次數據增量的起始時間戳并獲取上一次抽取數據更新時間最新的日期作為增量抽取的開始時間戳,用當前時間作為本次增量的結束時間戳。然后進行數據清洗,將清洗完成的數據加載到食品安全檢驗項目事實表中,最后計算表中的記錄數。
2.2.2.2 轉換文件設計
如5所示,先獲取檢驗項目維表數據和上一步驟的結果集,采用笛卡爾集算法為結果集進行檢驗項目編碼。然后清洗檢驗項目為的空記錄,去除ETL過程臨時字段,保留需要的字段。最后將本轉換的結果集寫入kettle臨時儲存區,并傳輸給JOB的下一個節點。

圖4:增量數據處理JOB文件設計

圖5:增量數據處理轉換文件設計
我們對所實現的系統進行了實驗和測試。運行環境主要為:ETL服務器主要配置為8核CPU、32GB內容;軟件配置為Linux操作系統、Oracle數據庫、ETL工具kettle。
圖6為部分增量數據,經過測試,該增量數據處理機制完全可以實現在60min內完成每月一次的增量數據匯集處理。
本文通過研究基于kettle的大數據處理機制,完成了對異構的食品監管數據的統一化、自動化匯集處理的模型設計及相應的Kettle實現,后續工作將會利用這套模型處理過的數據來進行分析與預測,為食品監管部門提供更大的幫助。