喬旺龍 劉學(xué)剛 杜洪波 何正帥 姚飛虎
摘 要:“智慧糧食”是對(duì)未來(lái)糧食行業(yè)信息化的頂層設(shè)計(jì),來(lái)自糧食系統(tǒng)內(nèi)部數(shù)據(jù)源的數(shù)據(jù)以結(jié)構(gòu)化數(shù)據(jù)為主,這些數(shù)據(jù)反映了大部分已經(jīng)數(shù)量化的糧食系統(tǒng)信息,對(duì)這些內(nèi)部數(shù)據(jù)的采集、存儲(chǔ)和管理,也需要納入智慧糧食大數(shù)據(jù)資源池,提前進(jìn)行規(guī)劃和研究。
關(guān)鍵詞:智慧糧食;系統(tǒng);數(shù)據(jù)采集
中圖分類號(hào):F326.11 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2018)15-0036-02
1 智慧糧食內(nèi)部數(shù)據(jù)采集研究背景
智慧糧食:為貫徹落實(shí)新的國(guó)家糧食安全戰(zhàn)略,提升糧情監(jiān)測(cè)預(yù)警能力,國(guó)家糧食局抓緊推進(jìn)“智慧糧食”信息化工作。所謂“智慧糧食”,就是創(chuàng)新應(yīng)用大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)、移動(dòng)平臺(tái)等信息技術(shù),形成糧食行業(yè)專有的大數(shù)據(jù)資源池,研發(fā)專用的數(shù)據(jù)分析預(yù)警決策模型,建立糧食信息成果發(fā)布體系,力爭(zhēng)把中國(guó)的糧食情況說(shuō)清、說(shuō)準(zhǔn)、說(shuō)全,著力提高對(duì)糧食供求形勢(shì)的分析預(yù)測(cè)能力、對(duì)國(guó)內(nèi)外糧食市場(chǎng)的把控牽引能力、對(duì)糧食流通的監(jiān)管服務(wù)能力,把飯碗端牢在自己手上??梢哉f(shuō),“智慧糧食”是對(duì)未來(lái)糧食行業(yè)信息化的頂層設(shè)計(jì)。
內(nèi)部數(shù)據(jù)是“智慧糧食”最主要的數(shù)據(jù)源,以動(dòng)態(tài)信息系統(tǒng)為代表的國(guó)家糧食局內(nèi)部IT信息系統(tǒng),就緒了國(guó)家糧食局內(nèi)部涉糧信息的歷史數(shù)據(jù)和上報(bào)數(shù)據(jù),包括統(tǒng)計(jì)型的生產(chǎn)數(shù)據(jù)、市場(chǎng)價(jià)格監(jiān)測(cè)數(shù)據(jù)、糧食消費(fèi)需求統(tǒng)計(jì)數(shù)據(jù)等。此外,省級(jí)糧食信息系統(tǒng)、直屬單位糧食信息系統(tǒng)中的數(shù)據(jù)也是重要的內(nèi)部數(shù)據(jù)源。
目前,來(lái)自糧食系統(tǒng)內(nèi)部數(shù)據(jù)源的數(shù)據(jù)以結(jié)構(gòu)化數(shù)據(jù)為主,這些數(shù)據(jù)反映了大部分已經(jīng)數(shù)量化的糧食系統(tǒng)信息,并且大都遵循國(guó)家標(biāo)準(zhǔn)或地方標(biāo)準(zhǔn),通過(guò)完善的大數(shù)據(jù)采集、存儲(chǔ)、ETL和管理體系,可以將全國(guó)的糧食系統(tǒng)結(jié)構(gòu)化數(shù)據(jù)集中融合加工成標(biāo)準(zhǔn)統(tǒng)一的全國(guó)性糧食大數(shù)據(jù)資源池,為智慧糧食的數(shù)據(jù)分析和數(shù)據(jù)挖掘提供數(shù)據(jù)支撐;同時(shí),糧食系統(tǒng)的視頻、圖像等非結(jié)構(gòu)化數(shù)據(jù)也在逐步積累,將來(lái)也會(huì)成為一類重要的數(shù)據(jù)源,因此,對(duì)這些非結(jié)構(gòu)化數(shù)據(jù)的采集、存儲(chǔ)和管理,也需要納入智慧糧食大數(shù)據(jù)資源池,提前進(jìn)行規(guī)劃和研究。
2 智慧糧食內(nèi)部數(shù)據(jù)特點(diǎn)分析
從智慧糧食內(nèi)部數(shù)據(jù)源中采集的數(shù)據(jù),可以通過(guò)以下綜合視圖來(lái)分析和管理,如圖1所示。
在這個(gè)視圖中,基本的維度結(jié)構(gòu)包括:
(1)自然時(shí)間維度,以年、月為單位,取得時(shí)間維度上的糧食信息。(2)行政區(qū)劃維度,具體以省、市、縣為分區(qū)分級(jí)維度,取得行政區(qū)劃維度上的糧食信息。(3)品類維度,以國(guó)家糧食局發(fā)布的LS/T 1703—2004《糧食信息分類與編碼-糧食分類及加工產(chǎn)品分類與代碼》為分類分級(jí)維度,取得不同品類的糧食信息。(4)糧食生命周期階段維度,具體以原糧種植、原糧收儲(chǔ)、原糧交易、成品糧加工、成品糧交易、成品糧批發(fā)和成品糧銷售為維度,取得各糧食生命周期階段維度的糧食信息。在此基礎(chǔ)上,可以增加儲(chǔ)備糧、糧食進(jìn)出口、糧食期貨、工業(yè)用糧、飼料用糧等補(bǔ)充維度。
通過(guò)以上四組維度的組合,可以清晰地對(duì)糧食數(shù)據(jù)進(jìn)行各種角度各種組合的統(tǒng)計(jì)分析,為智慧糧食的決策分析提供豐富的手段和支持,也可以抽取形成不同的建模數(shù)據(jù)集,滿足產(chǎn)量預(yù)測(cè)、價(jià)格預(yù)測(cè)、供需平衡預(yù)測(cè)等不同目標(biāo)的建模挖掘需要。
3 智慧糧食內(nèi)部數(shù)據(jù)采集與存儲(chǔ)
數(shù)據(jù)采集主要是采集各個(gè)數(shù)據(jù)源系統(tǒng)提供的數(shù)據(jù),并將其加載到數(shù)據(jù)平臺(tái)上。數(shù)據(jù)源包括關(guān)系型數(shù)據(jù)庫(kù)、消息流格式文件、文本格式文件、結(jié)構(gòu)化數(shù)據(jù)、電子文檔格式文件、圖片格式文件和視頻格式文件等。數(shù)據(jù)采集流程,如圖2所示。
數(shù)據(jù)源在JDBC/ODBC、FTP、Socket和二進(jìn)制消息流等連接協(xié)議的基礎(chǔ)上,通過(guò)Sqoop、Flume、Ftp等工具或命令腳本將數(shù)據(jù)推送至數(shù)據(jù)平臺(tái)的分布式文件系統(tǒng)上;數(shù)據(jù)平臺(tái)也可根據(jù)連接協(xié)議使用工具從數(shù)據(jù)源處抓取數(shù)據(jù)。
數(shù)據(jù)源的數(shù)據(jù)放到數(shù)據(jù)平臺(tái)的分布式系統(tǒng)上以后,可根據(jù)具體需求將數(shù)據(jù)存儲(chǔ)至數(shù)據(jù)平臺(tái)的不同組件中,如Hive、Hbase、Spark等,在此基礎(chǔ)之上后續(xù)進(jìn)行數(shù)據(jù)的分析計(jì)算。
在整個(gè)數(shù)據(jù)的采集過(guò)程中,均采用作業(yè)方式進(jìn)行,可即時(shí)調(diào)度也可定時(shí)調(diào)度。可通過(guò)監(jiān)控平臺(tái)集中管理和監(jiān)控采集作業(yè)。
不同類型的源數(shù)據(jù)采集和初步處理方式說(shuō)明如下:
(1)DBF格式、HTML、XML格式、JSON格式。對(duì)于結(jié)構(gòu)化數(shù)據(jù),可使用對(duì)象模型將格式文件解析成不同的對(duì)象存儲(chǔ)到數(shù)據(jù)平臺(tái)。DBF格式可使用javadbf組件解析;使用HTML Agility Pack 搭配 ScrapySharp解析html;根據(jù)具體情況使用DOM、SAX、DOM4J、或JDOM技術(shù)解析XML文件;使用json-lib或org.json解析JSON。(2)電子文檔格式(WORD、XLS、PDF…)??墒褂胘acob解析word文檔;使用POI解析xls文檔;使用PDFBox解析PDF文檔。電子文檔原文件可存儲(chǔ)到HDFS上,解析之后可把需要的信息存儲(chǔ)到數(shù)據(jù)平臺(tái)。原始電子文檔存儲(chǔ)到HDFS上。(3)圖片或視頻格式格式(JPG、JPEG、TIFF、BMP…)。將原始圖片先存儲(chǔ)到HDFS中,之后再利用圖像識(shí)別技術(shù)解析圖片將需要的信息存儲(chǔ)到數(shù)據(jù)平臺(tái)。
4 智慧糧食內(nèi)部數(shù)據(jù)ETL
由于內(nèi)部系統(tǒng)建設(shè)的歷史原因,采集到的源數(shù)據(jù)主要會(huì)存在以下問(wèn)題:
(1)由于部分業(yè)務(wù)系統(tǒng)未完成建設(shè),或部分業(yè)務(wù)系統(tǒng)未按標(biāo)準(zhǔn)完成源數(shù)據(jù)填報(bào),會(huì)導(dǎo)致數(shù)據(jù)缺漏,各個(gè)維度都可能存在缺漏,因此,只能用補(bǔ)報(bào)或插補(bǔ)的方式填補(bǔ)缺漏的數(shù)據(jù)。(2)由于系統(tǒng)之間的數(shù)據(jù)標(biāo)準(zhǔn)差異,當(dāng)需要匯總多個(gè)維度的數(shù)據(jù)時(shí),需要通過(guò)ETL工具來(lái)對(duì)源數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)清洗。ETL操作主要包括數(shù)據(jù)類型檢查、空值域約束(非空約束、值域檢查、自定義約束)、主鍵約束、外鍵約束、缺值處理、斷行清洗、空行過(guò)濾、去重。1)數(shù)據(jù)類型檢查。根據(jù)元數(shù)據(jù)中各個(gè)字段的數(shù)據(jù)類型,對(duì)輸入文件逐條記錄地檢查每個(gè)字段的數(shù)據(jù)是否與元數(shù)據(jù)中的類型相符合,對(duì)異常數(shù)據(jù)按照異常數(shù)據(jù)處理規(guī)則進(jìn)行處理。2)空值域約束??罩涤蚣s束包括:非空約束,值域檢查和自定義約束。空值域約束參數(shù)包括輸入路徑、輸出路徑、字段名稱、是否非空約束、值域約束范圍、替換值、自定義約束表達(dá)式、異常數(shù)據(jù)另存路徑等。3)缺值處理。按照指定的替換值填補(bǔ)數(shù)據(jù)文件中的缺值或Null值等。4)斷行清洗。針對(duì)原始數(shù)據(jù)或join后數(shù)據(jù)進(jìn)行斷行判斷,并根據(jù)異常數(shù)據(jù)處理規(guī)則進(jìn)行處理。5)空行過(guò)濾。針對(duì)數(shù)據(jù)中的空行進(jìn)行發(fā)現(xiàn)并處理,一般直接過(guò)濾空行。6)去重。將完全重復(fù)的數(shù)據(jù)行丟棄,生成沒(méi)有完全重復(fù)的數(shù)據(jù)行的新數(shù)據(jù)文件。7)字段類型轉(zhuǎn)換。修改原來(lái)數(shù)據(jù)字段的格式。8)計(jì)數(shù)區(qū)間化。按指定字段對(duì)數(shù)據(jù)進(jìn)行區(qū)間劃分,針對(duì)各區(qū)間的數(shù)據(jù),為該字段設(shè)置特定值。9)數(shù)值區(qū)間化。按指定字段對(duì)數(shù)據(jù)進(jìn)行區(qū)間劃分,按數(shù)值將字段值區(qū)間化為N個(gè)區(qū)間,每個(gè)區(qū)間數(shù)據(jù)取值范圍相等,并為該字段按不同區(qū)間設(shè)置特定值。10)CaseWhen。根據(jù)用戶輸入的條件,將指定字段的值進(jìn)行轉(zhuǎn)換,類似SQL的case when。用戶指定轉(zhuǎn)換的字段與轉(zhuǎn)換規(guī)則。支持對(duì)多字段進(jìn)行轉(zhuǎn)換,支持對(duì)某個(gè)字段多個(gè)轉(zhuǎn)換規(guī)則,支持default規(guī)則。可以配置轉(zhuǎn)換生成列的元數(shù)據(jù)信息。11)字符型數(shù)據(jù)處理。根據(jù)用戶指定的表達(dá)式,進(jìn)行對(duì)字符串的處理:如substring,字符串連接,trim等。12)日期型數(shù)據(jù)處理。對(duì)日期型的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。13)屬性交換。將屬性的兩列互換。
由于智慧糧食數(shù)據(jù)源眾多且數(shù)據(jù)復(fù)雜,因此需要建立一個(gè)靈活而強(qiáng)大ETL體系來(lái)支撐,以便針對(duì)不同的數(shù)據(jù)業(yè)務(wù)系統(tǒng),可以快速構(gòu)建或復(fù)用ETL腳本或模板,并保證日常大量ETL任務(wù)的高效穩(wěn)定運(yùn)行。為此,可以采用Nifi工具。Nifi是將數(shù)據(jù)轉(zhuǎn)換成一種流的形式在各種處理器之間進(jìn)行處理轉(zhuǎn)換的ETL工具,它具備的以下適合于智慧糧食數(shù)據(jù)ETL體系的特性:
(1)通過(guò)可視化可操作的用戶界面來(lái)編輯ETL工作流,提高開(kāi)發(fā)效率,便于管理,便于修改。(2)支持非常高的數(shù)據(jù)交換速率和導(dǎo)入速度,支持?jǐn)?shù)據(jù)回壓,擴(kuò)展性高,支持優(yōu)先級(jí)隊(duì)列,支持?jǐn)?shù)據(jù)跟蹤。(3)支持流程模板,支持自定義處理器。(4)高安全性:NiFi可以通過(guò)雙向SSL進(jìn)行數(shù)據(jù)加密。并且可以允許在發(fā)送與接收端使用共享秘鑰,及其他機(jī)制對(duì)數(shù)據(jù)流進(jìn)行加密與解密。用戶與系統(tǒng)間,NiFi允許雙向SSL鑒定,并且提供可插入授權(quán)模式,因此可以控制用戶的登錄權(quán)限(例如:只讀權(quán)限、數(shù)據(jù)流管理者、系統(tǒng)管理員)。
5 智慧糧食內(nèi)部數(shù)據(jù)管理
內(nèi)部數(shù)據(jù)采集融合并形成符合統(tǒng)一標(biāo)準(zhǔn)的智慧糧食大數(shù)據(jù)資源池中的基礎(chǔ)數(shù)據(jù)層的過(guò)程中,需要建立相應(yīng)的管理體系,包括:
(1)一數(shù)一源管理。目前糧食行業(yè)信息化系統(tǒng)中“一數(shù)多源”的現(xiàn)象比較普遍,如企業(yè)信息,直報(bào)系統(tǒng)中有企業(yè)的信息,市場(chǎng)交易中也有企業(yè)的信息。在業(yè)務(wù)系統(tǒng)還未達(dá)到一數(shù)一源管理標(biāo)準(zhǔn)時(shí),需要在內(nèi)部數(shù)據(jù)采集后做好一數(shù)一源的梳理工作。(2)元數(shù)據(jù)管理。由于內(nèi)部數(shù)據(jù)采集得到的是最基礎(chǔ)的源數(shù)據(jù),因此元數(shù)據(jù)管理應(yīng)該從這個(gè)階段就要開(kāi)始并打下嚴(yán)實(shí)的基礎(chǔ),主要工作包括:1)基礎(chǔ)元數(shù)據(jù)定義:需要梳理出所有的基礎(chǔ)元數(shù)據(jù)并給出清晰的業(yè)務(wù)定義和數(shù)據(jù)規(guī)范。2)技術(shù)元數(shù)據(jù)管理:需要制定清晰的技術(shù)元數(shù)據(jù)管理標(biāo)準(zhǔn),并實(shí)現(xiàn)技術(shù)元數(shù)據(jù)管理功能。3)業(yè)務(wù)元數(shù)據(jù)管理:需要根據(jù)業(yè)務(wù)部門的實(shí)際情況定義與技術(shù)元數(shù)據(jù)對(duì)應(yīng)的業(yè)務(wù)元數(shù)據(jù),并通過(guò)元數(shù)據(jù)管理功能實(shí)現(xiàn)技術(shù)元數(shù)據(jù)和業(yè)務(wù)元數(shù)據(jù)的映射。(3)數(shù)據(jù)標(biāo)簽管理。按前文所述的四組維度,對(duì)達(dá)到交付標(biāo)準(zhǔn)的數(shù)據(jù)表、數(shù)據(jù)集建立粒度合適的標(biāo)簽,以便可以快速查找目標(biāo)數(shù)據(jù)。(4)數(shù)據(jù)質(zhì)量評(píng)價(jià)。制定尺度合適的數(shù)據(jù)質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn),并實(shí)現(xiàn)自動(dòng)數(shù)據(jù)質(zhì)量檢測(cè)及評(píng)價(jià)功能,以便對(duì)來(lái)自各業(yè)務(wù)系統(tǒng)或各地、各內(nèi)部直屬單位的源數(shù)據(jù)進(jìn)行快速的數(shù)據(jù)質(zhì)量評(píng)價(jià),及時(shí)發(fā)現(xiàn)源數(shù)據(jù)存在嚴(yán)重質(zhì)量問(wèn)題的地方,及時(shí)采取糾正措施。(5)數(shù)據(jù)資產(chǎn)管理。按前文所述的四組維度,結(jié)合數(shù)據(jù)源和數(shù)據(jù)標(biāo)簽,建立數(shù)據(jù)資產(chǎn)索引,提供查詢和可視化展示功能,以便清晰地了解智慧糧食大數(shù)據(jù)資源池中的數(shù)據(jù)資產(chǎn)分布情況。