◎張啟濤 張洪瀚 李俊玲
大數(shù)據(jù)分析系統(tǒng),通過數(shù)據(jù)收集采集功能,將生產(chǎn)業(yè)務數(shù)據(jù)進行收集和清洗。按照資源前置庫以及交易數(shù)據(jù)資源庫進行數(shù)據(jù)收集和清洗。數(shù)據(jù)通過數(shù)據(jù)交換平臺實現(xiàn)從各平臺到中心前置庫。
交易信息資源庫主要包括交易平臺運行過程中涉及到的各類數(shù)據(jù)信息,如交易信息庫、主體信息庫、專家信息庫、信用信息庫、監(jiān)管信息庫等。
數(shù)據(jù)采集、數(shù)據(jù)分類后實現(xiàn)統(tǒng)計分析、交易動態(tài)分析、專題分析和智能分析。
各業(yè)務應用系統(tǒng)提供基礎的數(shù)據(jù)源,通過ETL過程實現(xiàn)數(shù)據(jù)源的抽取、轉換、加載等進入ODS數(shù)據(jù)庫中,基于ODS數(shù)據(jù)庫中的數(shù)據(jù)進一步的進行ETL,數(shù)據(jù)進行數(shù)據(jù)倉庫中進行數(shù)據(jù)的加工,實現(xiàn)數(shù)據(jù)集市、主題模型的建立等處理,最后以應用的形式進行對外的展示,如圖1所示。
圖1 系統(tǒng)設計圖
大數(shù)據(jù)分析子系統(tǒng)將數(shù)字化招采平臺、其他業(yè)務系統(tǒng)、外部系統(tǒng)等進行統(tǒng)一的數(shù)據(jù)采集,建立共享資源目錄,并提供統(tǒng)一的數(shù)據(jù)共享能力,使數(shù)據(jù)得到有效利用。再針對不同類型數(shù)據(jù)采用靈活的存儲技術,搭建端到端數(shù)據(jù)治理體系,實現(xiàn)數(shù)據(jù)的全流程管控,按交易信息庫、主體信息庫、專家信息庫、信用信息庫、監(jiān)管信息庫等不同的主題整合數(shù)據(jù)采購數(shù)據(jù)倉庫,支撐上層應用。結合業(yè)務需求,利用大數(shù)據(jù)技術對業(yè)務數(shù)據(jù)監(jiān)控預警、建模和專題分析,為采購決策提供精準且有效的支撐,如圖2所示。
圖2 總體結構設計圖
1.數(shù)據(jù)處理。數(shù)據(jù)處理過程主要負責將數(shù)據(jù)采集后的數(shù)據(jù)抽取到數(shù)據(jù)源,然后對數(shù)據(jù)源進行清洗轉換,同時對歷史數(shù)據(jù)進行沉淀,形成基礎數(shù)據(jù)層,再對基礎數(shù)據(jù)層的數(shù)據(jù)進行匯總計算得到數(shù)據(jù)模型層和數(shù)據(jù)指標層的數(shù)據(jù),總體流程通過統(tǒng)一流程調(diào)度模塊進行調(diào)度和銜接,如圖3所示。
圖3 數(shù)據(jù)處理示意圖
2.清洗轉換。數(shù)據(jù)清洗轉換是對不符合標準規(guī)則的數(shù)據(jù)進行格式、取值、類型等方面的過濾或轉換。例如對企業(yè)數(shù)據(jù)中的各個行業(yè)的單位進行統(tǒng)一轉換,對從不同口徑接入的企業(yè)數(shù)據(jù)中的名稱進行清洗和統(tǒng)一,對爬蟲數(shù)據(jù)進行過濾和去除重復。
數(shù)據(jù)清洗轉換包括三部分:上下文信息處理、數(shù)據(jù)轉換和數(shù)據(jù)清洗。
上下文信息處理:在數(shù)據(jù)源中存在大量的上下文信息,生產(chǎn)系統(tǒng)只有這類信息的原始信息,將原始信息內(nèi)含的豐富的分析信息內(nèi)容通過信息衍生處理和標準化處理,形成形成基礎數(shù)據(jù)層的數(shù)據(jù)。
數(shù)據(jù)轉換:通過對數(shù)據(jù)進行字段命名規(guī)范化、時間字段的統(tǒng)一和特殊字段的格式或取值轉換等操作,形成基礎數(shù)據(jù)層的數(shù)據(jù)。在通過對源數(shù)據(jù)信息的梳理,異常數(shù)據(jù)情況的識別,建立從源數(shù)據(jù)到目標數(shù)據(jù)的映射規(guī)則,做一定的計算、合并和拆分等轉換操作。
數(shù)據(jù)清洗:通過對數(shù)據(jù)進行排重,異常字段處理和無效數(shù)據(jù)過濾等操作,形成基礎數(shù)據(jù)層的數(shù)據(jù),使基礎數(shù)據(jù)層的數(shù)據(jù)更精確更有意義的過程。數(shù)據(jù)清洗是數(shù)據(jù)整合中的一個重要環(huán)節(jié),數(shù)據(jù)清洗直接影響了數(shù)據(jù)裝載到數(shù)據(jù)庫中的清潔度與準確度,關系到前端數(shù)據(jù)統(tǒng)計分析的可靠性及可信賴程度,如圖4所示。
圖4 數(shù)據(jù)清洗示意圖
去重復數(shù)據(jù)、去臟數(shù)據(jù):去掉原始數(shù)據(jù)集里的重復數(shù)據(jù)以及臟數(shù)據(jù)。例如某條記錄里,如果年齡字段的值小于零,則該條記錄就是臟數(shù)據(jù),需要予以剔除。
統(tǒng)一取值格式:統(tǒng)一字段的取值格式。例如當字段為時間類型時,那么統(tǒng)一格式為YYYY-MM-DDhi24:mi:ss;如果字段是數(shù)值型,如收入數(shù)據(jù),則統(tǒng)一保留六位小數(shù)。
表命名統(tǒng)一、字段命名統(tǒng)一:統(tǒng)一表的命名方式,表字段的命名方式。比如收入字段,原始數(shù)據(jù)集里可能命名為income、fee、charge等等,可統(tǒng)一為其中一種命名方法。
實體合并、拆分:實體合并,是將不同系統(tǒng)里相同的實體進行合并,形成統(tǒng)一的數(shù)據(jù)實體;實體拆分,是將同一個實體里,代表不同的業(yè)務或者范圍的內(nèi)容拆分成多個實體,比如,將操作流水表的內(nèi)容進行拆分。
衍生字段加工:將用途范圍廣、使用頻繁、基礎性強的指標,加工到基礎數(shù)據(jù)集里,從而提高數(shù)據(jù)的使用效率以及同一數(shù)據(jù)口徑。
數(shù)據(jù)清洗轉換通過配置進行管理,生成對應清洗、轉換規(guī)則關系映射表,系統(tǒng)通過調(diào)用、匹配該關系映射表,實現(xiàn)對原數(shù)據(jù)的自動清洗和自動轉換,生成標準數(shù)據(jù)集,從而完成數(shù)據(jù)清洗轉換整體流程操作。
3.數(shù)據(jù)抽取。統(tǒng)一流程調(diào)度模塊依據(jù)觸發(fā)規(guī)則觸發(fā)數(shù)據(jù)從數(shù)據(jù)裝載層進行抽取。數(shù)據(jù)抽取過程是針對數(shù)據(jù)裝載層中不同的數(shù)據(jù)源進行全量或增量的抽取的過程。全量抽取是針對歷史數(shù)據(jù),維表數(shù)據(jù)等需要一次性獲取全量的數(shù)據(jù)的抽取方法;增量抽取是針對源系統(tǒng)每天產(chǎn)生的增量數(shù)據(jù)進行抽取,增量抽取以源系統(tǒng)記錄的發(fā)生時間做為增量的標志,每次抽取之前首先判斷記錄最大的時間,然后根據(jù)這個時間取大于這個時間所有的記錄。例如對采購信息相關數(shù)據(jù)等按照實時更新或按照月度更新的數(shù)據(jù)需要采用定時增量抽取的方式進行抽取。
數(shù)據(jù)計算就是依據(jù)不同的數(shù)據(jù)模型,根據(jù)數(shù)據(jù)實效性要求和不同的計算復雜度采用不同的計算工具和方法對數(shù)據(jù)進行計算,最終得到主題模型所需的數(shù)據(jù)。根據(jù)主題模型可分為離線計算、實時計算、模型計算,如圖5所示。
圖5 數(shù)據(jù)計算示意圖
1.離線計算。離線計算:主要是針對數(shù)據(jù)量較大,但實時性要求不高的數(shù)據(jù),智慧采購系統(tǒng)中月度、季度、年度等數(shù)據(jù)需大量數(shù)據(jù)匯聚運算及信用評價等模型需要迭代式運算,可通過封裝HQL/SparkSql語句,基于MapReduce/Spark分布式計算框架進行數(shù)據(jù)模型計算,通過azkaban任務調(diào)度工具對計算任務進行編排和統(tǒng)一調(diào)度管理,實現(xiàn)多種類型和數(shù)據(jù)體量較大的數(shù)據(jù)的批量運算。
2.實時計算。對于準實時應用,可采用開源Storm流式技術框架來實現(xiàn)。Strom可以方便的在一個計算機集群中編寫與擴展復雜的實時計算,每秒可以處理數(shù)以萬記的消息?;谄浔旧淼募夹g特點和業(yè)務場景實效性要求,可以用來處理互聯(lián)網(wǎng)爬蟲數(shù)據(jù),實時的計算處理爬蟲獲取的即時數(shù)據(jù),不會出現(xiàn)大量數(shù)據(jù)積攢的延遲,保證整個系統(tǒng)向提供用戶極好的應用體驗。
3.模型計算。針對數(shù)據(jù)模型計算,可利用基于Tensorflow和SparkMlib等成熟的計算框架進行實現(xiàn)。其中SparkMlib已實現(xiàn)部分數(shù)據(jù)挖掘算法,已解決分布式計算問題。
總結:在實際應用場景中針對趨勢預測,分類等需求,首先用歷史數(shù)據(jù)進行模型訓練和校準,訓練好的模型存入模型庫,在新的批次數(shù)據(jù)到來時,統(tǒng)一流程調(diào)度模塊逐一調(diào)用模型庫中的模型,對新的數(shù)據(jù)進行計算。從數(shù)據(jù)建模系統(tǒng)中提取對應的模型代碼,應用于模型計算。