張 航,張 欣,張平康,李 琪
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽 550025)
隨著我國信息化建設(shè)程度的不斷提高,通過觀察、訪問、調(diào)研等方式積累了大量對扶貧開發(fā)領(lǐng)域極具實際指導(dǎo)意義的扶貧數(shù)據(jù),而目前,傳統(tǒng)的扶貧開發(fā)系統(tǒng)在管理和處理扶貧大數(shù)據(jù)方面所面臨的問題也日漸凸顯:(1)各級部門信息獨立,各自為戰(zhàn),主要以結(jié)構(gòu)化的關(guān)系型數(shù)據(jù)倉庫的形式來存儲處理數(shù)據(jù);(2)扶貧大數(shù)據(jù)具有強烈的自身特點,包括醫(yī)療、交通、教育等領(lǐng)域相互之間的關(guān)系和影響,使得關(guān)于扶貧的數(shù)據(jù)庫與知識庫具有大型、多維、動態(tài)變化等特點;(3)各級部門對于扶貧大數(shù)據(jù)的集中管理和利用效率不高,對數(shù)據(jù)的存儲和價值挖掘方面,存在數(shù)據(jù)失真、信息分散、處理能力弱的現(xiàn)象,這些都使得精準扶貧的治理參考缺少系統(tǒng)性的判斷預(yù)測,從而影響精準扶貧的治理成效。對此,通過將大數(shù)據(jù)處理技術(shù)與精準扶貧的有機結(jié)合,將跨平臺、跨系統(tǒng)的各方數(shù)據(jù)進行整合,對采集到的數(shù)據(jù)進行并行處理,挖掘出有價值數(shù)據(jù)成果,不僅能完善精準貧困評估的數(shù)據(jù)系統(tǒng),建立扶貧管理的動態(tài)機制,還能強化貧困問題的科學(xué)分析,有效地實現(xiàn)精準管理、精準幫扶、精準保障。
Hadoop是由Apache軟件基金會所開發(fā)的一個允許對大型數(shù)據(jù)集進行分布式處理的框架。通過其核心技術(shù)HDFS(Hadoop Distributed File System)和MapReduce以一種可靠、高效、可伸縮的方式進行數(shù)據(jù)處理[1]。其中HDFS負責為海量數(shù)據(jù)提供對數(shù)據(jù)的存儲管理服務(wù),由于它使用Java語言開發(fā),以及所具有的高容錯性和高自主性等特點,使得Hadoop可以很容易地在低成本的硬件上部署形成分布式系統(tǒng)。而MapReduce則負責為海量的數(shù)據(jù)提供強大的計算支持,充分利用集群能力來進行高速運算。
圖1 Hadoop分布式結(jié)構(gòu)模型
Hive是一個構(gòu)建于Hadoop文件系統(tǒng)之上的數(shù)據(jù)倉庫基礎(chǔ)架構(gòu),將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的SQL查詢功能,由此用戶可以通過使用ETL(Extract-Transform-Load)工具來實現(xiàn)對數(shù)據(jù)倉庫的存儲管理和大型數(shù)據(jù)集的查詢和分析功能[2]。Hive其本身沒有設(shè)置專門的數(shù)據(jù)存儲格式,也不能為數(shù)據(jù)建立索引,因此使得用戶可以按需要靈活地組織Hive中的表,只需要在創(chuàng)建表的時候?qū)ive數(shù)據(jù)中的列分隔符和行分隔符信息進行告知,Hive就可以實時地正確地解析數(shù)據(jù)。
HBase是Hadoop的一個分布式、面向列存儲的開源數(shù)據(jù)庫,它能為大數(shù)據(jù)提供隨機、實時的讀寫訪問功能,而且,其底層采用分布式文件系統(tǒng)作為存儲平臺,可以為數(shù)據(jù)的可靠性和系統(tǒng)的魯棒性提供保證[3]。HBase作為一種基于列存儲的數(shù)據(jù)庫,非常適合于非結(jié)構(gòu)化的數(shù)據(jù)存儲,可以實現(xiàn)高效強力的數(shù)據(jù)存儲和計算。此外,HBase之上還可以運用MapReduce計算模型來并行處理大規(guī)模數(shù)據(jù),這即是其強大性能的關(guān)鍵所在[4]。
針對現(xiàn)有的扶貧數(shù)據(jù)處理系統(tǒng)存在的數(shù)據(jù)處理和數(shù)據(jù)存儲等方面所存在的不足:一是現(xiàn)有的扶貧數(shù)據(jù)處理系統(tǒng)采用的大多是集中式的數(shù)據(jù)庫架構(gòu),隨著各部門收集數(shù)據(jù)的種類和數(shù)量的不斷增加,傳統(tǒng)的數(shù)據(jù)庫架構(gòu)將會面臨巨大的挑戰(zhàn),同時其對于海量數(shù)據(jù)的處理能力也是整個系統(tǒng)架構(gòu)的瓶頸;二是針對大量的非結(jié)構(gòu)化的扶貧大數(shù)據(jù)的涌入,現(xiàn)有的解決平臺因為數(shù)據(jù)量的不斷增加卻無法互聯(lián)互通而淪為信息孤島。因此,要解決扶貧大數(shù)據(jù)在存儲、計算和挖掘方面的問題,可以建立起一個統(tǒng)一的數(shù)據(jù)處理體系架構(gòu)和數(shù)據(jù)存儲平臺,讓原來的傳統(tǒng)數(shù)據(jù)倉庫被充分利用起來[5]。所以,本文鑒于此提出了以Hadoop為計算處理中心,HDFS和HBase為數(shù)據(jù)存儲中心的精準扶貧大數(shù)據(jù)系統(tǒng),通過Hadoop在分布式并行計算上的強大處理能力和HDFS的強大存儲能力,可以補充傳統(tǒng)數(shù)據(jù)庫在海量數(shù)據(jù)保存、處理方面的不足,同時還可以依靠Hadoop的橫向擴展能力突破傳統(tǒng)的單節(jié)點數(shù)據(jù)倉庫在計算處理能力上的瓶頸[6]。
通過對精準扶貧領(lǐng)域的相關(guān)研究,結(jié)合Hadoop的體系架構(gòu)的分析,提出精準扶貧大數(shù)據(jù)信息系統(tǒng)架構(gòu)框圖如圖2所示。該精準扶貧大數(shù)據(jù)信息系統(tǒng)采用層次化結(jié)構(gòu)設(shè)計原則,由下往上依次是基礎(chǔ)環(huán)境層、數(shù)據(jù)資源層、支撐層、應(yīng)用層和服務(wù)層。最底層為基礎(chǔ)環(huán)境層,屬于系統(tǒng)的硬軟件基礎(chǔ)設(shè)施,是實現(xiàn)信息傳輸?shù)幕颈WC;向上為數(shù)據(jù)資源層,負責將現(xiàn)有各部門的數(shù)據(jù)通過ETL保存到Hadoop集群數(shù)據(jù)節(jié)點,以實現(xiàn)文件的分片管理和負載均衡控制[7-8];支撐層則是負責為場景應(yīng)用和結(jié)果展現(xiàn)提供對應(yīng)的業(yè)務(wù)支撐,包含對服務(wù)、數(shù)據(jù)、內(nèi)容等方面的管理與集成功能,為系統(tǒng)與周邊其它各業(yè)務(wù)系統(tǒng)的對接及應(yīng)用的協(xié)同處理提供保障[9];應(yīng)用層則是通過調(diào)用命名節(jié)點提供的元數(shù)據(jù)信息,對原始數(shù)據(jù)集進行Map/Reduce處理,并將結(jié)果傳遞至服務(wù)層;服務(wù)層為系統(tǒng)的最高層,為用戶提供了操作界面接口,使其可以通過接口訪問應(yīng)用層,下達操作指令以及接受系統(tǒng)統(tǒng)計分析計算的結(jié)果。
圖2 精準扶貧大數(shù)據(jù)信息系統(tǒng)架構(gòu)框圖
精準扶貧大數(shù)據(jù)信息系統(tǒng)采用MVC三層結(jié)構(gòu),如圖3所示,其分別為視圖(View)、控制(Controller)和模型(Model),使用J2EE的Struts2實現(xiàn)平臺在各個層次上的功能,各層之間負責不同的工作,并通過相應(yīng)的通信接口進行數(shù)據(jù)交換[10]。
圖3 精準扶貧大數(shù)據(jù)信息系統(tǒng)技術(shù)框架
精準扶貧數(shù)據(jù)挖掘過程主要包括業(yè)務(wù)理解,數(shù)據(jù)整理,數(shù)據(jù)預(yù)處理,數(shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)分析,模式評估和知識表示[11]。其具體流程如圖4所示。
針對扶貧工作的數(shù)據(jù)挖掘是一個很寬泛的研究問題,所要分析的數(shù)據(jù)不僅容量大而且內(nèi)容豐富、結(jié)構(gòu)多樣。因此,挖掘工作的第一步就是要確定針對所要分析的具體對象和具體指標,而后有針對性的整理收集相關(guān)數(shù)據(jù)。這些從數(shù)據(jù)庫直接抽取的數(shù)據(jù)往往存在不完整、格式不統(tǒng)一、無效數(shù)據(jù)等問題,需要對其經(jīng)過清洗校驗等預(yù)處理,而后通過平滑聚集、數(shù)據(jù)概化、規(guī)范約束等方式,將預(yù)處理后的數(shù)據(jù)轉(zhuǎn)換為適合數(shù)據(jù)挖掘算法的形式。數(shù)據(jù)分析是整個扶貧數(shù)據(jù)挖掘工作中的核心部分,主要是根據(jù)所確定的業(yè)務(wù)和需求,選擇合適的數(shù)據(jù)挖掘算法,對所選取的特定的扶貧數(shù)據(jù)進行深層次的挖掘,發(fā)現(xiàn)其中有價值的規(guī)則和模式,最后將其以圖表等簡單直觀的方式呈現(xiàn)給用戶[12]。
圖4 精準扶貧數(shù)據(jù)挖掘過程
關(guān)聯(lián)規(guī)則主要用于尋找不同事物之間關(guān)聯(lián)性,例如扶貧工作中貧困程度與教育、醫(yī)療、交通等領(lǐng)域之間的關(guān)聯(lián),這其中能挖掘出的關(guān)聯(lián)規(guī)則對精準扶貧工作的具體實施具有非常重要的指導(dǎo)意義。當前應(yīng)用比較廣泛的關(guān)聯(lián)規(guī)則算法主要有Apriori算法和FP-Growth算法。
FP-Growth算法相比于Apriori算法,其通過合并重復(fù)路徑避免了重復(fù)掃描數(shù)據(jù)庫,采用遞歸的方式避免產(chǎn)生大量的候選項集,壓縮了搜索空間,在算法效率上快出一個數(shù)量級。FP-Growth算法通過頻繁模式樹(FPTree)的樹形數(shù)據(jù)結(jié)構(gòu),將頻繁項集壓縮到一棵頻繁模式樹上,然后將壓縮后的數(shù)據(jù)庫劃分為一組條件數(shù)據(jù)庫,并挖掘每個條件數(shù)據(jù)庫[13-15]。FP-Growth算法主要包括FP樹構(gòu)造和FP-Growth的挖掘兩個階段,其具體流程如圖5所示。
圖5 FP-Growth算法流程圖
隨著挖掘數(shù)據(jù)集的增大,內(nèi)存將不足以存儲巨大的FPTree,這時基于單一節(jié)點的FP-Growth算法就會面臨時間和空間上的雙重瓶頸,通過對FP-Growth算法進行并行化處理就可以較好地解決這一問題。使用事務(wù)數(shù)據(jù)集和最小支持度作為其輸入,其輸出為所有支持度技術(shù)大于最小支持度的頻繁模式。其算法共分為5步,包括兩次數(shù)據(jù)庫的掃描和兩組MapReduce任務(wù)。
步驟1數(shù)據(jù)分片。將事務(wù)數(shù)據(jù)集分成若干部分儲存在多個節(jié)點上,便于集群讀取數(shù)據(jù);
步驟2并行計算頻繁集。第一次掃描數(shù)據(jù)庫,計算每個節(jié)點上每一項的支持度計數(shù),并將結(jié)果合并得到頻繁項集F-list,由第一組MapReduce完成;
步驟3數(shù)據(jù)分組。使用負載均衡的分組策略將F-list劃分為Q組,每一組包含若干項,分組結(jié)果記作G-list;
步驟4并行挖掘頻繁項集。這是整個PFP算法的關(guān)鍵步驟,它通過使用第二組MapReduce任務(wù)將實物劃分到各個組,輸出<組號,事務(wù)>型數(shù)據(jù)對,在劃分結(jié)束之后,在本地創(chuàng)建本組的FPTree,然后對其進行挖掘,挖掘出相應(yīng)的頻繁模式;
步驟5聚合。將步驟4所產(chǎn)生的結(jié)果聚合起來得到最終結(jié)果[9]。
圖6 PFP-Growth算法主要步驟
用戶可以通過系統(tǒng)實時查看如圖7所示的貧困態(tài)勢統(tǒng)計信息。同時可以根據(jù)分類查看具體貧困戶、貧困村的檔案資料。如圖8所示,系統(tǒng)所計算的每名貧困戶的貧困指數(shù)及各類指標的貢獻度,圖9則顯示了系統(tǒng)通過用戶輸入的指標計算出的關(guān)聯(lián)規(guī)則的結(jié)果,通過這些對扶貧大數(shù)據(jù)的智能化管理和應(yīng)用,運行結(jié)果表明,達到了對精準扶貧過程的智能預(yù)警、智能決策、智能分析的目的,為之后扶貧開發(fā)的具體工作提供科學(xué)依據(jù)。
圖7 貧困態(tài)勢查詢頁面
圖8 貧困指數(shù)計算結(jié)果頁面
圖9 數(shù)據(jù)挖掘結(jié)果頁面
本文通過對大數(shù)據(jù)技術(shù)和互聯(lián)網(wǎng)應(yīng)用的研究,聯(lián)系精準扶貧相關(guān)工作實際情況,對扶貧大數(shù)據(jù)的特點進行分析探索,針對現(xiàn)有扶貧開發(fā)系統(tǒng)在存儲和處理大數(shù)據(jù)過程中存在的具體問題,建立了基于Hadoop的精準扶貧大數(shù)據(jù)信息系統(tǒng),通過該系統(tǒng)實現(xiàn)對貧困戶、貧困村等幫扶對象數(shù)據(jù)的動態(tài)化管理,完成扶貧業(yè)務(wù)開發(fā)全過程信息化動態(tài)跟蹤,打通精準扶貧相關(guān)行業(yè)部門之間的信息通道,避免產(chǎn)生信息孤島,實現(xiàn)數(shù)據(jù)共享和業(yè)務(wù)協(xié)作。目前,本文所設(shè)計的精準扶貧大數(shù)據(jù)信息系統(tǒng)已經(jīng)完成了一定的功能,但還存在一些不足之處。在后續(xù)研究工作中,將豐富系統(tǒng)的查詢功能,方便用戶根據(jù)需求對系統(tǒng)中數(shù)據(jù)進行模糊查詢。同時,本文只針對FP-Growth算法使用進行了研究,后期將加強對有關(guān)業(yè)務(wù)功能算法的研究,增加諸如聚類和決策等更多算法的研究引入,充實精準扶貧數(shù)據(jù)挖掘功能,更好地為精準扶貧工作提供決策輔助和數(shù)據(jù)支持。