吳志遠(yuǎn) 楊 眉 何明躍 施 爽
(中國(guó)地質(zhì)大學(xué)(北京),北京 100083)
ETL在科學(xué)標(biāo)本數(shù)據(jù)規(guī)范化集成整編中的應(yīng)用
吳志遠(yuǎn) 楊 眉 何明躍 施 爽
(中國(guó)地質(zhì)大學(xué)(北京),北京 100083)
在科學(xué)標(biāo)本數(shù)據(jù)的規(guī)范化集成整編中,標(biāo)準(zhǔn)和規(guī)范是前提,資源數(shù)據(jù)的整合、集成是核心。ETL技術(shù)能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的抽取、轉(zhuǎn)換和裝載。本文將其引入到科學(xué)標(biāo)本數(shù)據(jù)規(guī)范化集成整編中,實(shí)現(xiàn)對(duì)多源的、異構(gòu)的標(biāo)本數(shù)據(jù)的匯集和整合,并以巖礦化石標(biāo)本數(shù)據(jù)集成整編為例進(jìn)行應(yīng)用實(shí)踐,取得了較好的應(yīng)用效果,證明了應(yīng)用ETL技術(shù)實(shí)現(xiàn)標(biāo)本數(shù)據(jù)規(guī)范化集成整編的有效性。該方法具有一定的實(shí)踐借鑒意義,可為其他資源數(shù)據(jù)的規(guī)范化集成整編提供一定的科學(xué)參考。
ETL;科學(xué)標(biāo)本;數(shù)據(jù)集成整編;數(shù)據(jù)整合;Kettle
隨著“大數(shù)據(jù)”時(shí)代的來臨,資源單位對(duì)于館藏標(biāo)本的數(shù)字化、信息化也在迅速推進(jìn),科學(xué)標(biāo)本數(shù)據(jù)出現(xiàn)快速增長(zhǎng)的趨勢(shì)。雖然我國(guó)已制定了八大領(lǐng)域標(biāo)本數(shù)據(jù)規(guī)范,但如何通過技術(shù)手段實(shí)現(xiàn)科學(xué)標(biāo)本數(shù)據(jù)的高效集成整編,形成規(guī)范化、系統(tǒng)化的數(shù)據(jù),并達(dá)到長(zhǎng)期、持續(xù)的整合集成,是數(shù)據(jù)整編工作中的技術(shù)難點(diǎn)。ETL是解決構(gòu)建數(shù)據(jù)倉(cāng)庫(kù),實(shí)現(xiàn)數(shù)據(jù)整合集成的主要技術(shù)。ETL能解決科學(xué)標(biāo)本數(shù)據(jù)整合面臨的諸多問題,實(shí)現(xiàn)海量、異構(gòu)標(biāo)本數(shù)據(jù)的高效、持續(xù)整合,具有很好的適用性以及性能方面的優(yōu)勢(shì)。本文應(yīng)用ETL技術(shù)有效整合標(biāo)本信息資源,實(shí)現(xiàn)科學(xué)標(biāo)本數(shù)據(jù)的規(guī)范化集成整編,對(duì)于建立科學(xué)標(biāo)本資源數(shù)據(jù)庫(kù),實(shí)現(xiàn)標(biāo)本資源的信息共享和有效利用具有重要意義。
ETL[1]即數(shù)據(jù)抽?。‥xtract)、轉(zhuǎn)換(Transform)、裝載(Load)的縮寫,代表從數(shù)據(jù)抽取到裝載的技術(shù)實(shí)現(xiàn)過程,是一個(gè)用來實(shí)現(xiàn)異構(gòu)多數(shù)據(jù)源的數(shù)據(jù)整合集成工具。ETL技術(shù)可以實(shí)現(xiàn)數(shù)據(jù)從數(shù)據(jù)源向目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)的轉(zhuǎn)化,此轉(zhuǎn)化是實(shí)施資源整合的重要步驟[2]。ETL主要包括3個(gè)環(huán)節(jié):一是抽取,將數(shù)據(jù)從分散的異構(gòu)數(shù)據(jù)源中讀取出來,這是所有工作的前提;二是轉(zhuǎn)換,按照預(yù)先設(shè)計(jì)好的轉(zhuǎn)換規(guī)則對(duì)抽取的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,使本來異構(gòu)的數(shù)據(jù)轉(zhuǎn)換后能達(dá)到統(tǒng)一的標(biāo)準(zhǔn);三是裝載,將轉(zhuǎn)換好的數(shù)據(jù)按照計(jì)劃增量或全量加載到數(shù)據(jù)倉(cāng)庫(kù)中[3-4]。ETL處理流程是:首先用一個(gè)驗(yàn)證步驟去確定到達(dá)的或被抽取的數(shù)據(jù)是哪種類型,然后數(shù)據(jù)被送到一個(gè)特定轉(zhuǎn)換進(jìn)行處理。當(dāng)轉(zhuǎn)換完成后,數(shù)據(jù)將被傳遞到下一個(gè)轉(zhuǎn)換或者一個(gè)目標(biāo)表中,并在發(fā)生錯(cuò)誤的情況下,被轉(zhuǎn)移到一個(gè)錯(cuò)誤流程進(jìn)行處理[5]?!癊TL”概念結(jié)構(gòu)如圖1所示。
圖1 “ETL”概念結(jié)構(gòu)圖
Kettle[6](Kettle E.T.T.L. Environment)是一款國(guó)外開源的ETL 工具,純Java編寫,可在Window、Linux、Unix 上運(yùn)行,綠色版無需安裝,數(shù)據(jù)抽取高效穩(wěn)定[7],在國(guó)內(nèi)數(shù)據(jù)轉(zhuǎn)換、處理中應(yīng)用較多。它允許管理來自不同數(shù)據(jù)接口的數(shù)據(jù),通過提供一個(gè)圖形化的用戶環(huán)境來描述你想做什么,而不是你想怎么做。Kettle支持很多種輸入和輸出格式,包括文本文件、數(shù)據(jù)表以及商業(yè)和免費(fèi)的數(shù)據(jù)庫(kù)引擎。
數(shù)據(jù)整編的關(guān)鍵是按照統(tǒng)一的技術(shù)標(biāo)準(zhǔn),通過數(shù)據(jù)轉(zhuǎn)換處理,打破項(xiàng)目邊界,將多源(可能是不同的基準(zhǔn)或數(shù)值單位)不同空間、時(shí)間,相同要素的數(shù)據(jù)集成在一起。首先需要重點(diǎn)確定標(biāo)本數(shù)據(jù)要素對(duì)象、要素屬性全集,統(tǒng)一屬性項(xiàng)語(yǔ)義標(biāo)準(zhǔn)、值域范圍及數(shù)值單位。在此基礎(chǔ)上,制定標(biāo)本數(shù)據(jù)資料整編方案,內(nèi)容包括:整編技術(shù)標(biāo)準(zhǔn)、數(shù)據(jù)庫(kù)表結(jié)構(gòu)、整編軟件工具、整編實(shí)施等。
要進(jìn)行標(biāo)本數(shù)據(jù)集成整編,標(biāo)準(zhǔn)和規(guī)范必須先行[8]。根據(jù)科技基礎(chǔ)性工作專項(xiàng)制定的相關(guān)數(shù)據(jù)標(biāo)準(zhǔn)與規(guī)范,標(biāo)本數(shù)據(jù)整編參照的技術(shù)標(biāo)準(zhǔn)主要有:科技基礎(chǔ)性工作專項(xiàng)項(xiàng)目科學(xué)數(shù)據(jù)匯交標(biāo)本資源描述規(guī)范、科技基礎(chǔ)性工作專項(xiàng)數(shù)據(jù)資料分類與編碼。
數(shù)據(jù)庫(kù)設(shè)計(jì)一般有需求分析、概念模型設(shè)計(jì)、邏輯模型設(shè)計(jì)、物理設(shè)計(jì)、測(cè)試修改和數(shù)據(jù)字典編寫6個(gè)階段。標(biāo)本數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),參考這6個(gè)階段,主要依據(jù)現(xiàn)有的整編技術(shù)標(biāo)準(zhǔn),分析要素對(duì)象及屬性字段,設(shè)計(jì)標(biāo)準(zhǔn)化的要素?cái)?shù)據(jù)表結(jié)構(gòu)。對(duì)于巖礦化石標(biāo)本,根據(jù)自然科技資源共性描述規(guī)范,其要素?cái)?shù)據(jù)表的主要屬性項(xiàng)包括:平臺(tái)資源號(hào)、資源編號(hào)、資源名稱、資源外文名、保存資源類型、保存資源數(shù)量、共享方式、獲取途徑、保存單位、資源歸類編碼、具體用途、簡(jiǎn)要特征描述、資源提供者、資源提供時(shí)間、經(jīng)度、緯度、高程、產(chǎn)地、省、國(guó)家、地質(zhì)產(chǎn)狀或?qū)游?、資源形成時(shí)代、標(biāo)本編號(hào)、采集號(hào)、庫(kù)存位置號(hào)、實(shí)物狀態(tài)、圖片名、主要用途。此外,增加“標(biāo)本資源唯一編號(hào)”“對(duì)應(yīng)的元數(shù)據(jù)編號(hào)”“所屬項(xiàng)目編號(hào)”3個(gè)字段。其中,所屬項(xiàng)目編號(hào)、對(duì)應(yīng)的元數(shù)據(jù)編號(hào)與匯交的數(shù)據(jù)文件相同,標(biāo)本資源唯一編號(hào)形式是:專項(xiàng)數(shù)據(jù)資料分類編碼+流水號(hào)。除要素?cái)?shù)據(jù)表外,還需要設(shè)計(jì)相關(guān)的數(shù)據(jù)字典。
通常技術(shù)上進(jìn)行數(shù)據(jù)整合、集成的方法有:手工編寫代碼和利用軟件工具。采用手工編寫代碼的方式,開發(fā)效率低、周期長(zhǎng)、難度大,容易出錯(cuò),缺乏一致性的日志和錯(cuò)誤處理,難以保證可維護(hù)性,進(jìn)行大數(shù)據(jù)量的數(shù)據(jù)整合時(shí)可能會(huì)遇到性能問題。ETL技術(shù)在對(duì)數(shù)據(jù)源的支持、數(shù)據(jù)轉(zhuǎn)換、管理和調(diào)度、集成和開放性、對(duì)元數(shù)據(jù)管理方面都有很好的表現(xiàn),采用ETL工具作為整編軟件工具可以減少代碼工作量,能夠較好地滿足數(shù)據(jù)整編中數(shù)據(jù)多源、異構(gòu)及整合效率、性能的要求。
對(duì)原始標(biāo)本資源數(shù)據(jù)的數(shù)據(jù)來源、要素及屬性、內(nèi)容格式等進(jìn)行分析,并根據(jù)整編技術(shù)標(biāo)準(zhǔn)和數(shù)據(jù)庫(kù)設(shè)計(jì),在ETL工具中為各種數(shù)據(jù)源設(shè)計(jì)數(shù)據(jù)轉(zhuǎn)換作業(yè)流程。通過調(diào)度運(yùn)行ETL作業(yè),進(jìn)行數(shù)據(jù)抽取、合并與集成等操作,將標(biāo)本資源數(shù)據(jù)按照統(tǒng)一的標(biāo)準(zhǔn)整合到目標(biāo)數(shù)據(jù)庫(kù)中,為后續(xù)標(biāo)本資源的數(shù)據(jù)管理、共享、挖掘、分析等應(yīng)用提供基礎(chǔ)數(shù)據(jù)源。
巖礦化石標(biāo)本資源是自然科技資源領(lǐng)域八大類[9]資源之一。目前,對(duì)于巖礦化石標(biāo)本資源的數(shù)據(jù)整編,采用的是分布式加工方式,即各個(gè)資源單位向數(shù)據(jù)中心匯交標(biāo)本數(shù)據(jù)或提供數(shù)據(jù)接口,然后由數(shù)據(jù)中心統(tǒng)一對(duì)各數(shù)據(jù)源進(jìn)行規(guī)范化集成整編。
依照科學(xué)標(biāo)本數(shù)據(jù)整編方案,整編的主要流程是:首先參照巖礦化石標(biāo)本資源相關(guān)的標(biāo)準(zhǔn)規(guī)范設(shè)計(jì)數(shù)據(jù)庫(kù),選用大型關(guān)系數(shù)據(jù)庫(kù)Oracle;然后采用ETL工具Kettle作為主要整編工具軟件,在Kettle中設(shè)計(jì)數(shù)據(jù)整合流程;最后調(diào)度執(zhí)行任務(wù),實(shí)施數(shù)據(jù)整編。其中的應(yīng)用ETL技術(shù)實(shí)施數(shù)據(jù)整編是整個(gè)過程的關(guān)鍵,也是本文分析研究的重點(diǎn)。使用kettle進(jìn)行巖礦化石標(biāo)本資源數(shù)據(jù)規(guī)范化集成整編過程如圖2所示。
參照“科技基礎(chǔ)性工作專項(xiàng)項(xiàng)目科學(xué)數(shù)據(jù)匯交標(biāo)本資源描述規(guī)范”中的巖礦化石資源描述規(guī)范表設(shè)計(jì)巖礦化標(biāo)本數(shù)據(jù)庫(kù)及核心數(shù)據(jù)表的數(shù)據(jù)字典。從邏輯結(jié)構(gòu)進(jìn)行劃分,巖礦化石標(biāo)本數(shù)據(jù)庫(kù)的主要構(gòu)成有表格數(shù)據(jù)和圖片數(shù)據(jù)。
表格數(shù)據(jù):用二維表格表示的數(shù)據(jù),包括巖礦化石標(biāo)本數(shù)據(jù)表、巖礦化石分級(jí)歸類與編碼表和資源單位表。其中礦化石標(biāo)本數(shù)據(jù)表是數(shù)據(jù)庫(kù)主表,根據(jù)數(shù)據(jù)字典設(shè)計(jì),共29個(gè)字段;巖礦化石分級(jí)歸類與編碼表的設(shè)計(jì)參照“科技基礎(chǔ)性工作專項(xiàng)數(shù)據(jù)資料分類與編碼”中的巖礦化石編碼部分,表結(jié)構(gòu)采用目錄樹的形式。標(biāo)本數(shù)據(jù)表中的資源歸類編碼字段外鍵關(guān)聯(lián)編碼表的主鍵。
圖片數(shù)據(jù):拍攝的巖礦化石標(biāo)本圖片文件,文件名保存在標(biāo)本數(shù)據(jù)表圖像字段中。
數(shù)據(jù)整合之前,首先要對(duì)巖礦化石標(biāo)本數(shù)據(jù)源進(jìn)行調(diào)研分析,了解各單位數(shù)據(jù)源的數(shù)據(jù)格式、內(nèi)容、采集手段、數(shù)據(jù)質(zhì)量等。由于標(biāo)本資源來源于不同的單位,其數(shù)據(jù)是離散、異構(gòu)的,關(guān)聯(lián)程度較低,并且各資源單位匯交數(shù)據(jù)的方式也不盡相同,主要有以下幾種方式。
一是離線文件方式,通常是Excel、Access、Txt等數(shù)據(jù)文件。
二是數(shù)據(jù)庫(kù)連接方式。通過數(shù)據(jù)庫(kù)連接字符串連接Oracle、Mysql、Sqlserver等關(guān)系數(shù)據(jù)庫(kù),這種方式由于對(duì)外暴露了數(shù)據(jù)庫(kù)連接參數(shù),存在安全隱患,只能是臨時(shí)或內(nèi)部使用。
三是在線接口方式。資源單位通過HTTP對(duì)外提供接口服務(wù),目前比較流行的有Rest、Soap接口,使用接口方式連接方便,但對(duì)于技術(shù)水平要求比較高,需要資源單位能開發(fā)出相關(guān)Webservice接口并對(duì)外提供服務(wù)。
Kettle對(duì)這幾種常用的數(shù)據(jù)源都有很好的支持作用,其內(nèi)置有多種輸入組件支持在不同類型數(shù)據(jù)源之間建立連接,屏蔽各種數(shù)據(jù)源之間的差異,為整合輸入提供統(tǒng)一的數(shù)據(jù)視圖。
圖2 巖礦化石標(biāo)本Kettle數(shù)據(jù)整編過程
利用ETL工具Kettle設(shè)計(jì)整合流程。Kettle提供了一個(gè)圖形用戶界面Spoon。Spoon創(chuàng)建了轉(zhuǎn)換和作業(yè)的數(shù)據(jù)集成環(huán)境,可以通過Spoon快速地設(shè)計(jì)轉(zhuǎn)換和作業(yè)。轉(zhuǎn)換和作業(yè)可以保存在Kettle資源庫(kù)中,便于以后轉(zhuǎn)換和作業(yè)的復(fù)用。從資源庫(kù)中加載作業(yè)與轉(zhuǎn)換流程, 可以方便地實(shí)現(xiàn)對(duì)作業(yè)、轉(zhuǎn)換流程的優(yōu)化與重新定制, 提升ETL 處理效率, 改善數(shù)據(jù)質(zhì)量。根據(jù)Kettle的功能特點(diǎn),設(shè)計(jì)如下整合流程。
數(shù)據(jù)抽取是從不同方式的數(shù)據(jù)源如文件、數(shù)據(jù)庫(kù)、接口中抽取數(shù)據(jù)。按照抽取方式的不同,需要在Kettle中為每一種數(shù)據(jù)源選取相應(yīng)的內(nèi)置輸入組件,設(shè)計(jì)單獨(dú)的整合流程。按照抽取時(shí)間的不同,對(duì)數(shù)據(jù)ETL 過程可以分為兩種類型:全量ETL 過程和增量ETL 過程。全量ETL 過程一般用于數(shù)據(jù)庫(kù)的初始化,而增量ETL 過程則用于數(shù)據(jù)庫(kù)的后期增量維護(hù)。設(shè)計(jì)Kettle流程時(shí)可根據(jù)需要選擇全量抽取或增量抽取,一般采取首次全量、以后增量的方式。由于整編標(biāo)準(zhǔn)規(guī)定了每條巖礦化石標(biāo)本數(shù)據(jù)具有一個(gè)唯一的資源編號(hào),因此在增量數(shù)據(jù)抽取時(shí),可根據(jù)目標(biāo)數(shù)據(jù)庫(kù)該資源編號(hào)存在與否由Kettle自動(dòng)選擇進(jìn)行數(shù)據(jù)覆蓋更新或增量添加。
數(shù)據(jù)轉(zhuǎn)換首先需建立數(shù)據(jù)映射。數(shù)據(jù)的映射指的是建立從源數(shù)據(jù)到目標(biāo)數(shù)據(jù)的映射關(guān)系。實(shí)際整合中,部分單位的標(biāo)本數(shù)據(jù)是嚴(yán)格按照整編標(biāo)準(zhǔn)錄入的,轉(zhuǎn)換過程建立映射關(guān)系即可,無需進(jìn)行其他轉(zhuǎn)換;但還有許多單位的標(biāo)本數(shù)據(jù),與整編標(biāo)準(zhǔn)存在一定的差別。一些來自于單位原有數(shù)據(jù)庫(kù)或數(shù)據(jù)文件,其數(shù)據(jù)字段、內(nèi)容、格式等不符合標(biāo)準(zhǔn)規(guī)范,甚至某些字段在數(shù)據(jù)標(biāo)準(zhǔn)中并不直接存在,而是需要根據(jù)某些算法公式或者某些計(jì)算公式對(duì)各部分?jǐn)?shù)據(jù)進(jìn)行運(yùn)算才能得到。對(duì)于這些數(shù)據(jù)必須通過轉(zhuǎn)換來實(shí)現(xiàn)數(shù)據(jù)標(biāo)準(zhǔn)的統(tǒng)一。主要包括以下幾種數(shù)據(jù)轉(zhuǎn)換方式。
數(shù)據(jù)格式轉(zhuǎn)換:將來自不同數(shù)據(jù)源的同類數(shù)據(jù)轉(zhuǎn)換為相同格式。
數(shù)據(jù)類型轉(zhuǎn)換:將某種數(shù)據(jù)類型或格式轉(zhuǎn)換為另一種數(shù)據(jù)類型或格式的較低層次轉(zhuǎn)換[10]。
數(shù)據(jù)選擇操作:根據(jù)選擇條件對(duì)數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行選擇。
字段抽?。簭囊粋€(gè)或多個(gè)數(shù)據(jù)源中抽取有用的字段。
字段合并:通過計(jì)算、導(dǎo)出、分配,從多個(gè)數(shù)據(jù)源中將需要的字段整合在一起。運(yùn)用在需求處理過程中確定的業(yè)務(wù)法則進(jìn)行各種轉(zhuǎn)換,包括字符串操作、日期和時(shí)間算術(shù)運(yùn)算、條件語(yǔ)句以及基本計(jì)算等功能。
聚集和概括:將某一實(shí)體的實(shí)例數(shù)目減少到易于進(jìn)行直接利用的水平,也有助于預(yù)先計(jì)算出廣泛應(yīng)用的概括數(shù)字以使每個(gè)查詢不必重新計(jì)算。
例如,針對(duì)巖礦化石標(biāo)本資源單位提供的Rest接口和數(shù)據(jù)庫(kù)連接方式的數(shù)據(jù)源,在Kettle中設(shè)計(jì)的數(shù)據(jù)轉(zhuǎn)換流程如圖3所示。
圖3 Kettle數(shù)據(jù)轉(zhuǎn)換流程
在圖3中,上面一行是Rest接口數(shù)據(jù)源的整合流程,通過Kettle Rest Client組件將Rest接口地址輸入轉(zhuǎn)換成Json數(shù)據(jù)輸入,經(jīng)過一系列字段選擇、字符串操作、字符串替換轉(zhuǎn)換操作,以插入更新的方式(資源編號(hào)不存在即插入,存在則更新)將標(biāo)本數(shù)據(jù)整合到巖礦化石數(shù)據(jù)庫(kù)中。下面一行是數(shù)據(jù)庫(kù)連接方式的數(shù)據(jù)源,通過連接資源單位的巖礦化石數(shù)據(jù)庫(kù)表抽取數(shù)據(jù),再經(jīng)過中間相關(guān)的轉(zhuǎn)換操作,最后同樣以插入更新的方式整合數(shù)據(jù)到目標(biāo)數(shù)據(jù)庫(kù)。將前面定義好的轉(zhuǎn)換流程整合成一個(gè)ETL過程作業(yè),如圖4所示。
圖4 Kettle作業(yè)過程
數(shù)據(jù)在完成數(shù)據(jù)抽取、轉(zhuǎn)換后,按照統(tǒng)一的數(shù)據(jù)格式進(jìn)行存儲(chǔ)和加載。加載后的目標(biāo)數(shù)據(jù)庫(kù)完全滿足整編技術(shù)標(biāo)準(zhǔn),從而實(shí)現(xiàn)了從多源異構(gòu)數(shù)據(jù)到統(tǒng)一目標(biāo)數(shù)據(jù)庫(kù)的整合集成。目標(biāo)數(shù)據(jù)庫(kù)為巖礦化石標(biāo)本資源管理系統(tǒng)提供標(biāo)準(zhǔn)的數(shù)據(jù)源,還可以作為Kettle轉(zhuǎn)換的數(shù)據(jù)源,導(dǎo)出生成其他數(shù)據(jù)格式如Excel文件。
在準(zhǔn)備好數(shù)據(jù)源、目標(biāo)數(shù)據(jù)庫(kù),并設(shè)計(jì)完成Kettle轉(zhuǎn)換、作業(yè)流程后,進(jìn)行最后一步的任務(wù)執(zhí)行。Kettle任務(wù)執(zhí)行也就是實(shí)現(xiàn)數(shù)據(jù)加載的過程,一般是通過作業(yè)調(diào)度來實(shí)現(xiàn)的。作業(yè)是對(duì)轉(zhuǎn)換過程的整合,Kettle任務(wù)執(zhí)行作業(yè)調(diào)度有以下幾種方式。
(1)圖形界面執(zhí)行作業(yè)。在Kettle Spoon集成環(huán)境點(diǎn)擊運(yùn)行作業(yè),這種方式需要手工執(zhí)行,進(jìn)行作業(yè)調(diào)試時(shí)使用較多。
(2)命令行執(zhí)行作業(yè)。通過編寫Shell腳本調(diào)用Kettle作業(yè)命令運(yùn)行程序Kitchen。Shell腳本可手工執(zhí)行,也可以在Linux下添加Crontab任務(wù)來實(shí)現(xiàn)作業(yè)的定時(shí)調(diào)度。
(3)API調(diào)用執(zhí)行作業(yè)。通過Java程序調(diào)用Kettle提供的 JAVAAPI運(yùn)行任務(wù)。可以靈活地通過程序自行定制、批量處理作業(yè),技術(shù)上要求較高,與Java開源組件Quartz配合可以實(shí)現(xiàn)程序中作業(yè)的定時(shí)調(diào)度。
標(biāo)本數(shù)據(jù)整編實(shí)施中,應(yīng)根據(jù)數(shù)據(jù)源選擇Kettle作業(yè)調(diào)度方式。離線文件方式的數(shù)據(jù)源,一般不需要定時(shí)調(diào)度,可通過圖形界面執(zhí)行或Shell腳本手工執(zhí)行;數(shù)據(jù)庫(kù)連接和接口方式的數(shù)據(jù)源為在線方式,采用定時(shí)調(diào)度的方式,無需人工干預(yù),可根據(jù)情況使用Shell腳本或Java程序來定時(shí)執(zhí)行作業(yè)。整編后的目標(biāo)數(shù)據(jù)庫(kù)由巖礦化石標(biāo)本資源管理系統(tǒng)負(fù)責(zé)后臺(tái)數(shù)據(jù)管理,為了便于對(duì)多個(gè)整合流程的Kettle作業(yè)進(jìn)行管理,通過系統(tǒng)后臺(tái)程序調(diào)用Kettle提供的JAVAAPI,將Kettle的作業(yè)調(diào)度集成到資源管理系統(tǒng)的功能中。在系統(tǒng)管理頁(yè)面中可以很方便地手工調(diào)度Kettle作業(yè),還可以結(jié)合Quartz設(shè)置定時(shí)任務(wù),由系統(tǒng)后臺(tái)定時(shí)執(zhí)行Kettle作業(yè)。
依照制定的整編方案,通過對(duì)巖礦化石標(biāo)本各資源單位的數(shù)據(jù)源進(jìn)行分析、利用Kettle設(shè)計(jì)數(shù)據(jù)整合流程并調(diào)度運(yùn)行作業(yè),成功應(yīng)用ETL技術(shù)實(shí)現(xiàn)了標(biāo)本資源的規(guī)范化集成整編。目前已成功整合的巖礦化石標(biāo)本數(shù)據(jù)有10多萬條。對(duì)于異構(gòu)數(shù)據(jù)源,在設(shè)計(jì)好流程后,整編輸入數(shù)據(jù)量越大,整合效率越高。經(jīng)測(cè)試,對(duì)于1000條數(shù)據(jù)輸入,Kettle作業(yè)運(yùn)行時(shí)間一般不超過10秒;對(duì)于1萬條左右的數(shù)據(jù),一般不超過30秒。與手工編程相比,極大地提高了整合速度。
采用保存Kettle整合流程在資源庫(kù)中的方式,在后續(xù)新增的數(shù)據(jù)源在數(shù)據(jù)格式?jīng)]有變化的情況下,可以直接復(fù)用流程;當(dāng)發(fā)生變化時(shí),可根據(jù)數(shù)據(jù)源變化對(duì)流程進(jìn)行相應(yīng)的調(diào)整,無需重新設(shè)計(jì)流程,提高了整合效率。通過調(diào)用JAVAAPI將Kettle作業(yè)調(diào)度集成到標(biāo)本資源管理系統(tǒng)中,實(shí)現(xiàn)了整合流程的作業(yè)調(diào)度系統(tǒng)化、自動(dòng)化管理。
在整合過程中,一些因素會(huì)導(dǎo)致作業(yè)的調(diào)度運(yùn)行出現(xiàn)異常。如數(shù)據(jù)源的質(zhì)量問題(數(shù)據(jù)格式、長(zhǎng)度、一致性等),經(jīng)常會(huì)引起作業(yè)的異常終止。通過分析Kettle的運(yùn)行日志中的錯(cuò)誤信息,確定數(shù)據(jù)源中具體哪一部分的數(shù)據(jù)存在問題,然后將相關(guān)問題反饋給資源所在單位,由資源單位負(fù)責(zé)進(jìn)行修改。因此,Kettle作業(yè)運(yùn)行時(shí)可以校驗(yàn)數(shù)據(jù)的完整性、一致性等要素,保證數(shù)據(jù)質(zhì)量。當(dāng)數(shù)據(jù)源質(zhì)量較差時(shí),會(huì)嚴(yán)重影響整合效率。
(1)在標(biāo)本數(shù)據(jù)規(guī)范化集成整編中,由于標(biāo)本數(shù)據(jù)的多源異構(gòu)性,導(dǎo)致了整編工作的復(fù)雜性。ETL技術(shù)能夠高效地將異構(gòu)數(shù)據(jù)源中的標(biāo)本資源數(shù)據(jù)進(jìn)行抽取、轉(zhuǎn)換和加載,很好地滿足了規(guī)范化集成整編中數(shù)據(jù)整合的需求。
(2)根據(jù)需求設(shè)計(jì)了標(biāo)本資源數(shù)據(jù)整編方案,以巖礦化石標(biāo)本資源數(shù)據(jù)為例,使用開源ETL工具Kettle設(shè)計(jì)實(shí)現(xiàn)了異構(gòu)標(biāo)本數(shù)據(jù)源的規(guī)范化數(shù)據(jù)整合、集成過程,較好地解決了規(guī)范化集成整編中由于數(shù)據(jù)多源異構(gòu)性而造成的數(shù)據(jù)難以實(shí)現(xiàn)集成的問題。
(3)由于ETL是按照統(tǒng)一的標(biāo)準(zhǔn)和規(guī)范進(jìn)行數(shù)據(jù)整合,對(duì)于源數(shù)據(jù)中不符合標(biāo)準(zhǔn)規(guī)范并且無法進(jìn)行數(shù)據(jù)轉(zhuǎn)換的私有數(shù)據(jù)部分(資源單位自定義),ETL將按照規(guī)則進(jìn)行過濾。與源數(shù)據(jù)相比,整合集成的巖礦化石標(biāo)本目標(biāo)數(shù)據(jù)會(huì)損失這部分私有數(shù)據(jù)內(nèi)容。
(4)由于ETL技術(shù)的復(fù)雜性和標(biāo)本資源數(shù)據(jù)的多源異構(gòu)性,探索一套通用的ETL數(shù)據(jù)整合方法,使其更加自動(dòng)、高效和智能,有待下一步研究。
[1]繆嘉嘉, 鄧蘇, 劉青寶.ETL綜述[J]. 計(jì)算機(jī)工程,2004, 30(3): 4-5.
[2]高立春, 徐葉強(qiáng). ETL在公安部門數(shù)據(jù)共享與資源整合中的應(yīng)用[J].情報(bào)雜志, 2011, 29(B12): 190-192.
[3]尹曉楠, 鄒曉濤, 張冬. 基于Kettle 的北京市水務(wù)普查數(shù)據(jù)的提取與轉(zhuǎn)換[J].中國(guó)水, 2013, 21: 57–59, 42.
[4]崔有文, 周金海.基于Kettle的數(shù)據(jù)集成研究[J].計(jì)算機(jī)技術(shù)與發(fā)展, 2015(4): 153–157.
[5]CASTERS M, BOUMAN R, DONGEN J V. Pentaho Kettle解決方案: 使用PDI構(gòu)建開源ETL解決方案[M].北京: 電子工業(yè)出版社, 2014.
[6]郭丹, 樊紅.基于ETL-KETTLE 的貴州卷煙營(yíng)銷大數(shù)據(jù)分析及可視化[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2017, 26(1):74-80.
[7]曹一化, 劉旭.自然科技資源共性描述規(guī)范[M].北京:中國(guó)科學(xué)技術(shù)出版社, 2006.
[8]王運(yùn)紅, 張莞, 沈欣媛, 等.國(guó)家自然科技資源e-平臺(tái)建設(shè)實(shí)踐[J]. 中國(guó)科技資源導(dǎo)刊, 2008(4): 16-19.DOI: 10.3772/j.issn.1674-1544.2008.04.004.
[9]劉龍庚, 楊東日, 李小平.信息產(chǎn)業(yè)資源共享與分析平臺(tái)中ETL技術(shù)研究[J].四川大學(xué)學(xué)報(bào)(自然科學(xué)版),2012, 49(1): 85-89.
Application of ETL in Standarded and Integrated Reorganizition of scientific Specimen Resource Data
WU Zhiyuan, YANG Mei, HE Mingyue, SHI Shuang
(China University of Geosciences, Beijing 100083)
In the standard and integrated reorganization of scientific specimen resource data, standards and norms are the prerequisite, and the collection and integration of resource data are the core. ETL technology has the ability to realize data extracting, transforming and loading. this paper introduces into the standard and integrated reorganization of scientific specimen resource data to collect and integrate multi-source and heterogeneous specimen resource data, and proves the effectiveness of ETL technology in the standard and integrated reorganization of specimen resource data. The method has a certain practical reference signi fi cance,providing some scientific reference for the standard and integrated reorganization of other resources data.
ETL, scientific specimen, integrated reorganization of data, data integration, Kettle
TP311.13
A
10.3772/j.issn.1674-1544.2017.05.009
吳志遠(yuǎn)(1979—),男,中國(guó)地質(zhì)大學(xué)(北京)工程師,研究方向:數(shù)據(jù)庫(kù)技術(shù)(通訊作者);楊眉(1980—),女,中國(guó)地質(zhì)大學(xué)(北京)助理研究員,研究方向:標(biāo)本資源數(shù)字化與共享;何明躍(1963—),男,中國(guó)地質(zhì)大學(xué)(北京)教授,研究方向:礦物學(xué)巖石學(xué)礦床學(xué);施爽(1992—),中國(guó)地質(zhì)大學(xué)(北京)碩士研究生,研究方向:礦物學(xué)。
科技基礎(chǔ)性工作專項(xiàng)重點(diǎn)項(xiàng)目“科技基礎(chǔ)性工作數(shù)據(jù)資料集成與規(guī)范化整編”(2013FY110900);國(guó)家科技基礎(chǔ)條件平臺(tái)項(xiàng)目“國(guó)家?guī)r礦化石標(biāo)本資源共享平臺(tái)”。
2017年7月14日。