丁鵬程
(寧波大學(xué)信息科學(xué)與工程學(xué)院,浙江 寧波 315200)
Spark 技術(shù)可以實現(xiàn)對大數(shù)據(jù)的快速集群計算,其運行在Hadoop 集群上,能夠?qū)adoop 中的數(shù)據(jù)資源進行訪問?;赟park 技術(shù),對數(shù)據(jù)進行處理和分析,可以支持多種文件格式,包括文本文件、SequenceFile、Avro 等。同時,Spark 的數(shù)據(jù)結(jié)構(gòu)為RDD(彈性分布式數(shù)據(jù)集),該數(shù)據(jù)集在創(chuàng)建后不能修改[1]。應(yīng)用Spark技術(shù)對數(shù)據(jù)進行處理,是創(chuàng)建RDD、轉(zhuǎn)化RDD、調(diào)用RDD,并進行求值的過程。最終,RDD 中的數(shù)據(jù)會分布到集群中,實現(xiàn)并行化的操作執(zhí)行。
Hadoop 技術(shù)是基于分布式服務(wù)器集群對數(shù)據(jù)進行運算和分析的框架。包括HDFS、MapReduce、Yarn 組件?;诒疚闹饕芯績?nèi)容,著重對MapReduce 組件進行介紹。首先,MapReduce 組件是一種數(shù)據(jù)處理的編程模型,分為:Map、Reduce 兩個階段[1]。
Clickhouse 是一個列式數(shù)據(jù)庫,建立該數(shù)據(jù)庫的目的在于對數(shù)據(jù)進行快速的在線分析與處理[2]。Clickhouse數(shù)據(jù)庫的優(yōu)點包括:緊湊數(shù)據(jù)格式、數(shù)據(jù)壓縮、數(shù)據(jù)存儲在磁盤、多核處理、支持分布式、支持部分SQL、數(shù)據(jù)實時更新等。
Spark(計算引擎)是一種具有通用性特征的,可以對大規(guī)模數(shù)據(jù)進行快速計算和處理的引擎。根據(jù)官方的數(shù)據(jù)信息顯示,Spark 計算引擎的運算速度快于HadoopMapReduce 的運算速度100 倍[2]。并且Spark 計算引擎的運行模式具有多樣化特征,主要包括:本地運行模式、獨立集群運行模式等。本文采用Spark 的分布式集群系統(tǒng)平臺架構(gòu),對用戶的行為數(shù)據(jù)信息分析系統(tǒng)進行深度設(shè)計。該系統(tǒng)架構(gòu)層次有四層,分別為:數(shù)據(jù)采集層、數(shù)據(jù)存儲層、數(shù)據(jù)分析層、數(shù)據(jù)應(yīng)用層。其中,數(shù)據(jù)存儲層,可以分布式存儲系統(tǒng)所采集到的數(shù)據(jù)與信息,通過虛擬技術(shù)的應(yīng)用,實現(xiàn)數(shù)據(jù)信息的統(tǒng)一化管理;數(shù)據(jù)分析層是該系統(tǒng)的核心層,可以對不同類型的數(shù)據(jù)進行聚類處理與關(guān)聯(lián)性分析。基于大數(shù)據(jù)處理需求,數(shù)據(jù)分析層直接接入Spark 平臺;數(shù)據(jù)應(yīng)用層可以對數(shù)據(jù)信息進行提取,并通過文字、圖表等形式展示給用戶,為用戶的應(yīng)用等帶來便利。
數(shù)據(jù)采集是該系統(tǒng)的基礎(chǔ)內(nèi)容,是數(shù)據(jù)分析的關(guān)鍵步驟。采集的用戶行為數(shù)據(jù)質(zhì)量,直接影響著用戶行為分析結(jié)果的質(zhì)量。在傳統(tǒng)數(shù)據(jù)采集與應(yīng)用的系統(tǒng)中,主要對用戶的操作行為、瀏覽習(xí)慣行為等數(shù)據(jù)進行采集,并通過第三方數(shù)據(jù)收集相關(guān)腳本信息。但這種方式存在一定的估算誤差,導(dǎo)致用戶行為傾向程度判定不精準(zhǔn)[2]。因此,本系統(tǒng)設(shè)計中,深度應(yīng)用大數(shù)據(jù)技術(shù),通過編寫代碼,實現(xiàn)對用戶的全量事件、指標(biāo)的跟蹤與分析。
基于數(shù)據(jù)采集,數(shù)據(jù)信息將會被發(fā)送到消息列隊中,通過對海量用戶行為數(shù)據(jù)的存儲,賦予用戶行為信息日志的高可靠性、高容錯性、高獲得性。為提高用戶的行為數(shù)據(jù)與信息的分析精準(zhǔn)性,基于Spark 的Transformation、Action 算子,對相關(guān)數(shù)據(jù)信息進行實時分析。同時,結(jié)合sql 語句形式,對相應(yīng)算法進行優(yōu)化,以讀取分布式文件系統(tǒng)中的數(shù)據(jù),并對數(shù)據(jù)進行分類和離線分析,最終將分析結(jié)果傳送到關(guān)系型數(shù)據(jù)庫中,從而實現(xiàn)數(shù)據(jù)分析結(jié)果可視化展示。
數(shù)據(jù)應(yīng)用方面,包括對數(shù)據(jù)的展示、數(shù)據(jù)智能推薦、用戶行為預(yù)測三部分。數(shù)據(jù)展示方面,是通過Sprintboot提供的數(shù)據(jù)訪問接口,對Mybatis 進行持久化框架連接和應(yīng)用。同時,Angular 組件在系統(tǒng)中的應(yīng)用,可以加快信息數(shù)據(jù)應(yīng)用的響應(yīng)速度,有利于系統(tǒng)數(shù)據(jù)信息處理質(zhì)量的提升。最后,通過Echarts,將信息動態(tài)以直觀的形式展示給用戶。在數(shù)據(jù)智能推薦方面,基于內(nèi)容過濾的推薦算法、雙重聚類算法的融合,形成混合推薦技術(shù)。通過該技術(shù)的應(yīng)用,可以對用戶行為日志進行讀取、分析,并在此基礎(chǔ)上,對用戶行為進行關(guān)于服務(wù)內(nèi)容的智能推薦。用戶行為預(yù)測方面,基于數(shù)據(jù)包的重組算法,可以根據(jù)用戶行為的相關(guān)數(shù)據(jù),實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)信息的重組。
在用戶行為分析方法中,應(yīng)用最為廣泛的方法為關(guān)聯(lián)規(guī)則算法。而Apriori 算法是關(guān)聯(lián)規(guī)則中常用算法,其核心內(nèi)容與思想為:通過對候選項的連接與支持,對頻繁項集進行剪枝,進而得到最大頻繁項集與預(yù)先設(shè)定的最小置信度閾值,最終生成關(guān)聯(lián)規(guī)則[2]。其算法流程,如圖1所示。
圖1 Apriori算法流程
在計算候選頻繁項集過程中,需要對每個項集進行數(shù)據(jù)集合掃描。若數(shù)據(jù)過于龐大,則耗時較長。因此,在第一次讀取數(shù)據(jù)集過程中,可以通過矩陣的方式,對轉(zhuǎn)換集合的每一項內(nèi)容進行展示。例如,若第一行的數(shù)據(jù)項集顯示為1,則需要針對該數(shù)據(jù)項集中每一項數(shù)據(jù)情況進行挖掘和分析。若分析過程中,出現(xiàn)設(shè)置,則表示為1;若未出現(xiàn)設(shè)置,則表示為2,并且第二輪及后面輪次的候選集的支持度統(tǒng)計,只需通過候選集、候選集相對應(yīng)的數(shù)據(jù)內(nèi)容,進行下一環(huán)節(jié)的操作,從而得出候選集的支持度。這種方式,不僅提高數(shù)據(jù)掃描的效率,減少掃描次數(shù),而且還提高了數(shù)據(jù)計算的效率與質(zhì)量。
本質(zhì)而言,Spark 算法語Hadoop 算法極為相似,但Spark算法能夠更好地與數(shù)據(jù)挖掘、機器學(xué)習(xí)技術(shù)的應(yīng)用。在運算過程中,用戶行為的數(shù)據(jù)信息統(tǒng)一存儲在HDFS中,通過對數(shù)據(jù)的讀取,可以獲取頻繁項集的全局支持度,最終將計算后的頻繁項集保存在HDFS 中。
以線上教學(xué)的移動終端APP 為例,當(dāng)學(xué)生應(yīng)用APP時,可以保存按鈕點擊、登錄等行為數(shù)據(jù)信息。通過對保留的數(shù)據(jù)信息的分析與處理,可以對學(xué)生訪問APP 時長、次數(shù)、感興趣內(nèi)容、操作習(xí)慣等數(shù)據(jù)信息進行提取,并將學(xué)生使用APP 相關(guān)數(shù)據(jù)顯示在屏幕上[1]?;趯嵺`數(shù)據(jù)分析,教師可以通過APP 顯示的相關(guān)信息,對學(xué)生的學(xué)習(xí)進行監(jiān)督與管理。通過Apriori 算法的應(yīng)用,設(shè)定支持度的閾值為22%,置信度的閾值為72%。結(jié)合計算分析結(jié)果,得出學(xué)生的活躍時間情況,如表1所示。
表1 學(xué)生活躍時間
表1分析可知,學(xué)生在7-11h、16-19h 的學(xué)習(xí)時間較長,表明學(xué)生在課余時間,這兩個時間段是學(xué)生學(xué)習(xí)的高峰時間,也是學(xué)生學(xué)習(xí)的習(xí)慣時間。
為有效分析用戶行為,提出基于Spark 算法的用戶行為分析的系統(tǒng)架構(gòu)。為實現(xiàn)用戶行為信息的有效分析和深度應(yīng)用,對Apriori 算法進行改進,并以線上教學(xué)平臺的移動終端APP 用戶數(shù)據(jù)進行關(guān)聯(lián)性分析和驗證,確保設(shè)計的系統(tǒng)可以實現(xiàn)。