摘要:在信息化背景下,數(shù)據(jù)集成可以有效減少數(shù)據(jù)冗余,提高數(shù)據(jù)利用率,實(shí)現(xiàn)數(shù)據(jù)的互聯(lián)共通。文章基于開源Kettle工具,采用Quartz設(shè)計(jì)并實(shí)現(xiàn)了一套B/S模式下具有用戶管理、數(shù)據(jù)集成轉(zhuǎn)換、圖形化“拖拉拽”的在線數(shù)據(jù)集成平臺(tái)。該平臺(tái)實(shí)現(xiàn)了對ETL作業(yè)的統(tǒng)籌調(diào)度、監(jiān)督和控制,從而提高應(yīng)用程序開發(fā)的效率,有效降低開發(fā)和運(yùn)維成本。
關(guān)鍵詞:數(shù)據(jù)集成平臺(tái);數(shù)據(jù)抽取清洗載入;二次開發(fā);Kettle;Quartz
中圖分類號(hào):TP311" 文獻(xiàn)標(biāo)志碼:A
0 引言
大數(shù)據(jù)時(shí)代下,數(shù)據(jù)信息和錯(cuò)綜復(fù)雜的數(shù)據(jù)邏輯爆炸式增長,數(shù)據(jù)將成為未來發(fā)展的新能源與動(dòng)力[1]。但在實(shí)際應(yīng)用中,各系統(tǒng)之間因數(shù)據(jù)格式和訪問方法不同無法傳輸共享數(shù)據(jù)從而導(dǎo)致“數(shù)據(jù)孤島”的難題。同時(shí),許多數(shù)據(jù)抽取清洗載入(Extract Transform Load, ETL)軟件大多為傳統(tǒng)型軟件,對客戶端計(jì)算機(jī)軟硬件配置要求較高,需要下載、安裝和升級,開發(fā)維護(hù)成本高。因此,提供一個(gè)便捷高效的在線數(shù)據(jù)集成平臺(tái)成為迫在眉睫的需求[2]?;诖?,本文設(shè)計(jì)并實(shí)現(xiàn)了一套基于開源Kettle和Quartz的在線Web數(shù)據(jù)集成平臺(tái)。
1 系統(tǒng)分析
1.1 系統(tǒng)可行性分析
1.1.1 經(jīng)濟(jì)可行性
本平臺(tái)開發(fā)使用開源組件與框架,采用Tomcat一鍵部署,開發(fā)和部署經(jīng)濟(jì)成本低;同時(shí),使用前后端分離程序結(jié)構(gòu),維護(hù)成本低。
1.1.2 技術(shù)可行性
本平臺(tái)采用Kettle7.0作為ETL功能引擎、Spring Framework 3.2.9作為Web框架。Kettle是一款開源的ETL工具,對外提供許多應(yīng)用程序編程接口(Application Programming Interface, API),適合二次開發(fā)擴(kuò)展[3-4]。Spring Framework解決了Java代碼和Servlet之間的耦合,優(yōu)化了controller層[5-6]。作為本數(shù)據(jù)集成平臺(tái)的表示層框架,Spring部署靈活、功能強(qiáng)大,為Web層開發(fā)提供了更加方便快速的支持,能夠滿足系統(tǒng)開發(fā)需要。
1.1.3 應(yīng)用可行性
平臺(tái)設(shè)計(jì)目的是提高數(shù)據(jù)利用效率,解決“數(shù)據(jù)孤島”的問題以及緩解傳統(tǒng)ETL工具多為C/S架構(gòu)的困局,B/S架構(gòu)對客戶端計(jì)算機(jī)硬件配置要求較低且沒有操作系統(tǒng)限制,具有廣泛的應(yīng)用實(shí)踐價(jià)值。
1.2 系統(tǒng)功能分析
平臺(tái)的總體目標(biāo)是實(shí)現(xiàn)一款基于Web的數(shù)據(jù)集成平臺(tái),即設(shè)計(jì)一個(gè)基于B/S的ETL數(shù)據(jù)集成工具。主要實(shí)現(xiàn)以下幾個(gè)功能:①實(shí)現(xiàn)不同關(guān)系型數(shù)據(jù)庫、文件之間的數(shù)據(jù)集中、清洗、轉(zhuǎn)換和傳輸。②實(shí)現(xiàn)在Web端通過“拖拉拽”方式實(shí)現(xiàn)對數(shù)據(jù)流程的配置與傳輸功能的控制。③實(shí)現(xiàn)對ETL任務(wù)進(jìn)行綜合性管理與監(jiān)控。④實(shí)現(xiàn)對任務(wù)的定時(shí)調(diào)度。
2 系統(tǒng)設(shè)計(jì)
2.1 平臺(tái)架構(gòu)設(shè)計(jì)
本文提出的Web數(shù)據(jù)集成平臺(tái)具備能在多種數(shù)據(jù)源、各種不同數(shù)據(jù)庫或文件中抽取數(shù)據(jù)并進(jìn)行轉(zhuǎn)換、加載的功能。Web數(shù)據(jù)集成平臺(tái)系統(tǒng)設(shè)計(jì)使用ExtJS、MXGraph、Spring MVC、Mybatis框架搭建B/S結(jié)構(gòu),重塑原生Kettle的架構(gòu)結(jié)構(gòu),進(jìn)行二次開發(fā)。Web平臺(tái)界面采用ExtJS、MXGraph搭建圖形化界面,擁有C/S結(jié)構(gòu)的強(qiáng)交互性與轉(zhuǎn)換各流程中數(shù)據(jù)連線和拖拽功能,同時(shí)采用Quartz和Spring作為任務(wù)調(diào)度方式,將元數(shù)據(jù)模式的ETL任務(wù)存放于系統(tǒng)資源庫中,讀取資源庫ETL元數(shù)據(jù),解析后將ETL任務(wù)通過MXGraph展現(xiàn),實(shí)現(xiàn)了基于B/S架構(gòu)開發(fā)ETL任務(wù)的功能。本平臺(tái)通過Quartz定時(shí)框架可以對ETL任務(wù)進(jìn)行管理及監(jiān)控,對平臺(tái)中運(yùn)行的作業(yè)進(jìn)行檢測,實(shí)時(shí)監(jiān)測任務(wù)執(zhí)行進(jìn)度。
數(shù)據(jù)集成平臺(tái)總體框架使用3層架構(gòu),分別為Web前端展示層、Web后端處理層與底層基于Kettle內(nèi)核的執(zhí)行層,使用Quartz替換原生Kettle的調(diào)度監(jiān)控模塊,總體設(shè)計(jì)架構(gòu)如圖1所示。
2.2 平臺(tái)模塊設(shè)計(jì)
平臺(tái)按功能劃分為7個(gè)主要模塊:模型管理模塊、平臺(tái)管理模塊、任務(wù)管理模塊、定時(shí)調(diào)度模塊、日志管理模塊、節(jié)點(diǎn)管理模塊以及用戶管理模塊,如圖2所示。
3 系統(tǒng)實(shí)現(xiàn)
3.1 前端頁面實(shí)現(xiàn)
3.1.1 頁面組件拖拽功能實(shí)現(xiàn)
本平臺(tái)的重要功能是將Web框架Spring與MXGraph引擎進(jìn)行整合實(shí)現(xiàn)拖拽功能,極大地方便用戶進(jìn)行數(shù)據(jù)轉(zhuǎn)換和作業(yè)配置,完成數(shù)據(jù)操作。頁面組件拖拽功能主要使用MXGraph框架核心類實(shí)現(xiàn)。核心類中createGraph方法用于生成MXGraph對象,通過MXGraph對象的insertEdge方法和insertVertex方法在轉(zhuǎn)換模塊背景區(qū)插入頂點(diǎn)和邊框,同時(shí)使用setConnectable設(shè)置連線。實(shí)現(xiàn)拖拽功能重點(diǎn)是新建初始化Toolbar方法,遍歷獲取所有的dom組件項(xiàng)對象,將dom對應(yīng)的組件項(xiàng)對象的寬高與JavaScript結(jié)合作為容器展現(xiàn)圖形。平臺(tái)調(diào)用makeDraggable方法,配置給定的dom元素充當(dāng)指定圖形的拖動(dòng)源,隨后給dom節(jié)點(diǎn)元素返回一個(gè)新的充當(dāng)指定圖形的mxDragSource。判斷組件拖拽先使用動(dòng)作監(jiān)聽器監(jiān)聽鼠標(biāo)按下動(dòng)作和鼠標(biāo)所點(diǎn)擊的圖形坐標(biāo),然后監(jiān)聽鼠標(biāo)按下的移動(dòng),啟動(dòng)startDrag函數(shù)。如果鼠標(biāo)被監(jiān)聽為彈起,所選目標(biāo)將被放置在鼠標(biāo)下,最后啟動(dòng)stopDrag函數(shù)結(jié)束拖動(dòng),實(shí)現(xiàn)頁面組件的拖拽功能。
3.1.2 任務(wù)模塊
任務(wù)模塊主要包含轉(zhuǎn)換管理、作業(yè)管理、任務(wù)組管理和任務(wù)監(jiān)控等功能,是集成平臺(tái)的核心功能模塊。轉(zhuǎn)換管理模塊可以使用拖拽方式對轉(zhuǎn)換邏輯進(jìn)行設(shè)計(jì),同時(shí)還提供保存轉(zhuǎn)換、運(yùn)行轉(zhuǎn)換、預(yù)覽轉(zhuǎn)換、調(diào)試轉(zhuǎn)換、校驗(yàn)轉(zhuǎn)換等功能按鍵。用戶雙擊圖形化組件,可以對組件進(jìn)行配置;數(shù)據(jù)源數(shù)據(jù)表輸入組件配置頁面擁有編輯、新建、向?qū)У裙δ?;作業(yè)管理頁面具有作業(yè)屬性查看、編輯和作業(yè)定時(shí)等功能。
3.1.3 用戶模塊
用戶模塊用于平臺(tái)用戶管理,管理員用戶登錄平臺(tái)時(shí)會(huì)提供添加用戶的功能按鈕,可選擇創(chuàng)建管理員或普通用戶。
3.1.4 平臺(tái)模塊
在平臺(tái)模塊中,儀表板組件顯示了運(yùn)行中的作業(yè)數(shù)、運(yùn)行中的轉(zhuǎn)換數(shù)、節(jié)點(diǎn)數(shù)量和定時(shí)作業(yè)的數(shù)量,用戶可以隨時(shí)查看平臺(tái)操作中的作業(yè)。
3.1.5 模型模塊
模型模塊中轉(zhuǎn)換管理配置數(shù)據(jù)源和目標(biāo)后,用戶可以執(zhí)行其他配置,如轉(zhuǎn)儲(chǔ)任務(wù)的名稱等。相關(guān)配置完成后,系統(tǒng)會(huì)顯示當(dāng)前配置的信息;用戶確認(rèn)配置后可以保存當(dāng)前配置。平臺(tái)檢查配置有效性,主要是測試輸入的信息是否標(biāo)準(zhǔn),保存配置前是否填寫了所需的項(xiàng)。有效性測試成功后,系統(tǒng)提示任務(wù)保存成功,任務(wù)創(chuàng)建結(jié)束,反之則提示錯(cuò)誤,返回前一配置界面進(jìn)行修改。模型模塊可以對作業(yè)和轉(zhuǎn)換進(jìn)行新建操作。
3.2 后端處理層實(shí)現(xiàn)
后端處理層接收前端展示層的請求進(jìn)行處理后,發(fā)放到執(zhí)行層執(zhí)行,起到承上啟下的作用,也是3層架構(gòu)中的核心部分。任務(wù)管理模塊主要功能是負(fù)責(zé)任務(wù)的管理和作業(yè)的運(yùn)行,對轉(zhuǎn)換的過程進(jìn)行調(diào)度。本平臺(tái)轉(zhuǎn)換模塊采取低耦合、高擴(kuò)展性的組件化開發(fā)。以CSV輸入模塊為例,如圖3所示,CsvInput類繼承AbstractStep并重寫AbstractStep類的decode和encode方法;在encode方法中使用encode.setAttribute對Kettle中相應(yīng)的CsvInputMeta進(jìn)行參數(shù)設(shè)置,在decode方法中通過mxCell cell.getAttribute(String)進(jìn)行配置,實(shí)現(xiàn)模塊化開發(fā)。
3.3 執(zhí)行層實(shí)現(xiàn)
Kettle的作業(yè)運(yùn)行分為圖形化運(yùn)行和命令行運(yùn)行。本平臺(tái)采用Kettle內(nèi)核作為ETL操作引擎,同時(shí)修改了Kettle的調(diào)度機(jī)制,由Quartz管理調(diào)度信息。將調(diào)度系統(tǒng)與Kettle分開,利用了Quartz調(diào)度框架[7]強(qiáng)大的可用性和可伸縮性,實(shí)現(xiàn)對任務(wù)的定時(shí)調(diào)度。Quartz定時(shí)作業(yè)使用與carte服務(wù)器交互的方式或調(diào)用Kettle API方式執(zhí)行定時(shí)作業(yè)。
4 系統(tǒng)測試
4.1 平臺(tái)環(huán)境
在線數(shù)據(jù)集成平臺(tái)在Windows環(huán)境下開發(fā),使用B/S架構(gòu),運(yùn)行在服務(wù)器端,支持不同的運(yùn)行環(huán)境。本平臺(tái)上線運(yùn)行可部署在Windows或Linux環(huán)境下,用戶登錄后可進(jìn)行各項(xiàng)數(shù)據(jù)轉(zhuǎn)換操作并查看平臺(tái)各項(xiàng)操作情況,運(yùn)行效果如圖4所示。
4.2 平臺(tái)轉(zhuǎn)換模塊測試
利用本平臺(tái)對航空大數(shù)據(jù)集進(jìn)行數(shù)據(jù)預(yù)處理作業(yè),通過JDBC連接MySQL數(shù)據(jù)庫測試成功,如圖5(a)所示。用戶可以在平臺(tái)轉(zhuǎn)換頁面拖拉組件建立ETL數(shù)據(jù)處理流程對數(shù)據(jù)集進(jìn)行去重操作,數(shù)據(jù)從Excel輸入經(jīng)過過濾記錄組件、去除重復(fù)記錄組件再輸出到數(shù)據(jù)庫表中,如圖5(b)所示。通過使用航空公司數(shù)據(jù)集對轉(zhuǎn)換模塊進(jìn)行測試,平臺(tái)實(shí)際結(jié)果與預(yù)期結(jié)果一致,驗(yàn)證數(shù)據(jù)操作與轉(zhuǎn)換模塊ETL功能正常工作。
5 結(jié)語
本文設(shè)計(jì)并實(shí)現(xiàn)了Web數(shù)據(jù)集成平臺(tái)底層引擎調(diào)用ETL工具Kettle的API,能在多種關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫中進(jìn)行數(shù)據(jù)集成操作,解決數(shù)據(jù)轉(zhuǎn)換傳輸問題,提高應(yīng)用程序開發(fā)的效率。數(shù)據(jù)集成平臺(tái)使用B/S架構(gòu)代替了傳統(tǒng)軟件的C/S架構(gòu),利用B/S架構(gòu)高度自由化的特性,解決了傳統(tǒng)ETL工具需要下載安裝、占用用戶時(shí)間與空間的問題。下一步研究工作是繼續(xù)優(yōu)化本平臺(tái)數(shù)據(jù)轉(zhuǎn)換的配置、支持傳輸?shù)臄?shù)據(jù)庫和數(shù)據(jù)類型,完善數(shù)據(jù)集成平臺(tái)的完整性以及可使用性。
參考文獻(xiàn)
[1]顧勝勤.“數(shù)據(jù)化”將成為民航企業(yè)未來發(fā)展的強(qiáng)大動(dòng)力[J].空運(yùn)商務(wù),2017(7):14-16.
[2]張春亮.基于ETL的企業(yè)數(shù)據(jù)交換平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2016.
[3]趙建勛.基于Kettle的數(shù)據(jù)整合研究與實(shí)踐[J].西安文理學(xué)院學(xué)報(bào)(自然科學(xué)版),2020(3):28-31,36.
[4]武晉飛.基于Kettle的鐵路客運(yùn)營銷數(shù)據(jù)交換平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].鐵路計(jì)算機(jī)應(yīng)用,2019(11):27-31.
[5]張浩.SSM框架在Web應(yīng)用開發(fā)中的設(shè)計(jì)與實(shí)現(xiàn)研究[J].電腦知識(shí)與技術(shù),2023(8):52-54.
[6]張傳國,王伶俐.基于MEAN+SpringMVC的服務(wù)管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2017(增刊2):538-541.
[7]崔記東.基于Kettle和Quartz的數(shù)據(jù)集成平臺(tái)的研究與實(shí)現(xiàn)[D].鄭州:鄭州大學(xué),2019.
(編輯 王永超編輯)
Design and implementation of a Web data integration platform based on Kettle
ZHAO" Ji1, 2, WANG" Zehao1
(1.Wuxi City College of Vocational Technology, Wuxi 214000, China; 2. Big Data Intelligent Application
Engineering Technology Research and Development Center, Wuxi 214000, China)
Abstract: Under the background of informatization and Internet, data integration can effectively reduce data redundancy, improve data utilization, and achieve data interconnection. Based on open-source Kettle using Quartz, an online data integration platform in B/S mode with user management, data integration transformation, and graphical drag and drop is designed and implemented in this article. This platform realizes the overall scheduling, supervision, and control of ETL jobs, thus greatly improving the efficiency of application development and effectively reducing development and operation costs.
Key words: data integration platform; extract-transform-load; secondary development; Kettle; Quartz