侯菡萏 張帆
摘 要:本文以大數(shù)據(jù)主流技術(shù)SparkCore和SparkSQL為主,搭配主流前端框架SpringMVC,系統(tǒng)前端方便社區(qū)管理者操作,提供高交互性、清晰易懂的可視化界面;后端優(yōu)化分析算法,提高執(zhí)行效率,增強(qiáng)代碼魯棒性和可擴(kuò)展性,實(shí)現(xiàn)了社區(qū)用戶消費(fèi)行為分析預(yù)測、上網(wǎng)指數(shù)分析等功能,為管理者制定更合理高效的決策提供依據(jù)。
關(guān)鍵詞:社區(qū)用戶;行為分析;Spark技術(shù)
1 引言
隨著中國國力的快速提高,人們對居住條件及其所在社區(qū)提供的服務(wù)都有了更高的要求。社區(qū)一般由第三方物業(yè)公司管理或社區(qū)用戶自治,每一個(gè)社區(qū)都會(huì)有相應(yīng)的社區(qū)管理者去決策。如果管理者能夠提供合理決策,分配合適資源,居民的幸福感就會(huì)提升。由于不同環(huán)境、不同地區(qū)、不同時(shí)間下,兩個(gè)社區(qū)往往存在著較大的差異,社區(qū)用戶間的需求和生活習(xí)性也截然不同,社區(qū)的管理不能僅憑經(jīng)驗(yàn)。根據(jù)中國民政部2020年2季度民政統(tǒng)計(jì)數(shù)據(jù)顯示,現(xiàn)今全國共有51.7萬個(gè)村委會(huì),11.1萬居委會(huì),如此龐大數(shù)量下社區(qū)管理者與住戶之間往往存在諸多矛盾,社區(qū)管理者認(rèn)為住戶感受過激、特例化;而社區(qū)住戶認(rèn)為管理者管理經(jīng)驗(yàn)不足,不能合理分配資源,出現(xiàn)決策無效甚至失誤。本文采用大數(shù)據(jù)技術(shù)解決以上矛盾,大數(shù)據(jù)技術(shù)提供了一種能夠客觀、實(shí)時(shí)反映某個(gè)時(shí)段內(nèi)社區(qū)用戶行為的方式,社區(qū)管理者依據(jù)大數(shù)據(jù)分析結(jié)果,實(shí)現(xiàn)多角度掌握社區(qū)用戶行為,通過可視化界面及時(shí)察覺異常數(shù)據(jù),從而提供有效決策。
2 大數(shù)據(jù)相關(guān)技術(shù)
2.1 Spark
Spark作為一款優(yōu)秀的大數(shù)據(jù)開發(fā)技術(shù),是一個(gè)專門為大規(guī)模數(shù)據(jù)而生的基于內(nèi)存的實(shí)時(shí)計(jì)算引擎。其有四大特點(diǎn),分別是速度快,相較于Hadoop,相同數(shù)據(jù)量Spark快100倍;易用性,提供了豐富的API借口,包含Python、Java、Scala等;通用性,提供一站式服務(wù),包含核心SparkCore、使用SQL語句的SparkSQL、實(shí)時(shí)處理的SparkStreaming、機(jī)器學(xué)習(xí)的MLlib等;運(yùn)行在任何地方,本身以.class形式存儲(chǔ),可以直接在JVM中運(yùn)行。
2.2 SpringMVC
SpringMVC是一個(gè)較為優(yōu)秀的Java Web開發(fā)框架,相較于以前的Web開發(fā),其做了非常多的優(yōu)化,將核心部分做了分工,分為M(Model),V(View),C(Controller),大大降低了耦合,同時(shí)增強(qiáng)了內(nèi)聚,節(jié)約了開發(fā)人員的學(xué)習(xí)成本,提高開發(fā)效率,減少失誤可能性。
2.3 Clickhouse
Clickhouse是一個(gè)列式數(shù)據(jù)庫,建立該數(shù)據(jù)庫的目的在于對數(shù)據(jù)進(jìn)行快速的在線分析與處理。Clickhouse數(shù)據(jù)庫的優(yōu)點(diǎn)包括:緊湊數(shù)據(jù)格式、數(shù)據(jù)壓縮、數(shù)據(jù)存儲(chǔ)在磁盤、多核處理、支持分布式、支持部分SQL、數(shù)據(jù)實(shí)時(shí)更新等。
3 系統(tǒng)架構(gòu)設(shè)計(jì)
在大數(shù)據(jù)開發(fā)流程設(shè)計(jì)中需要先確認(rèn)數(shù)據(jù)的輸入和輸出,分別是社區(qū)管理者提供的源數(shù)據(jù)文件和數(shù)據(jù)庫結(jié)果表;其次確認(rèn)輸入的數(shù)據(jù)量總和,輸出的數(shù)據(jù)量是結(jié)果表,數(shù)據(jù)量較小。由于分析結(jié)果既要生成結(jié)果表,還要展示到前端界面,需要一定的即時(shí)性和交互性,因此本系統(tǒng)選用Spark技術(shù),由于Hive和MapReduce等技術(shù)適用于離線分析,一般用于在每天凌晨處理昨日的數(shù)據(jù),而Spark則是基于內(nèi)存實(shí)時(shí)處理,選用Clickhouse來存儲(chǔ)更合適。同時(shí)Spark提供了一站式服務(wù),有專門針對數(shù)據(jù)庫的SparkSQL,設(shè)計(jì)大數(shù)據(jù)開發(fā)架構(gòu)如圖1所示。
4 系統(tǒng)功能設(shè)計(jì)
系統(tǒng)采用模塊化思想,結(jié)合歸納法和演繹法進(jìn)行設(shè)計(jì)。模塊化思想要求每個(gè)子模塊都具有一致的數(shù)據(jù)結(jié)構(gòu)、一致的代碼風(fēng)格規(guī)范以及一致的操作流程,使用這種方式可以將一個(gè)復(fù)雜模塊抽象為若干個(gè)邏輯清晰功能統(tǒng)一的子模塊,從而提高代碼復(fù)用性,增強(qiáng)代碼的可擴(kuò)展性,減少維護(hù)的成本并提高開發(fā)人員的開發(fā)效率。歸納法即在以往相似系統(tǒng)設(shè)計(jì)集的基礎(chǔ)上,進(jìn)行需求相關(guān)的二次設(shè)計(jì),雖然能保證系統(tǒng)設(shè)計(jì)不會(huì)出現(xiàn)全局上的失誤,但是往往也得不到有效的結(jié)構(gòu)創(chuàng)新和改革。演繹法通過總結(jié)規(guī)律,根據(jù)普遍規(guī)律自下而上抽象出整個(gè)系統(tǒng)的邏輯。使用這種方法能夠個(gè)性化定制系統(tǒng),具有最合適最能滿足需求的特點(diǎn),但開發(fā)成本大幅度提高,也更容易出錯(cuò),開發(fā)周期延長。因此開發(fā)過程中,最好的方式就是將兩者結(jié)合,這兩種方法的任何一個(gè)缺點(diǎn)都會(huì)嚴(yán)重影響本系統(tǒng)的質(zhì)量,故需要中和兩種手段并積極發(fā)揮優(yōu)勢的一面。依據(jù)以上方法,在社區(qū)用戶行為分析系統(tǒng)中抽象設(shè)計(jì)出三大模塊,各個(gè)模塊下繼續(xù)劃分多個(gè)子模塊,真正意義上實(shí)現(xiàn)了模塊與模塊間的低耦合,模塊內(nèi)部的高內(nèi)聚。消費(fèi)行為分析模塊包括消費(fèi)地點(diǎn)排名分析、消費(fèi)能力分析和消費(fèi)分布分析。借書行為分析模塊包括總借閱圖書排名分析、月借閱圖書排名分析、各類別借閱圖書排名分析、總借閱圖書作者排名分析、借閱用戶性別比例分析、借還書時(shí)間段分析、總借閱圖書出版社排名分析和社區(qū)用戶閱讀量排名分析。上網(wǎng)行為分析模塊包括網(wǎng)絡(luò)使用高低峰分析和上網(wǎng)指數(shù)分析。系統(tǒng)結(jié)構(gòu)如圖2所示。
5 用戶行為數(shù)據(jù)分析與實(shí)現(xiàn)
本質(zhì)而言,Spark算法與Hadoop算法極為相似,但Spark算法能夠更好地進(jìn)行數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)技術(shù)方面的應(yīng)用。在運(yùn)算過程中,用戶行為的數(shù)據(jù)信息統(tǒng)一存儲(chǔ)在HDFS中,通過對數(shù)據(jù)的讀取,可以獲取頻繁項(xiàng)集的全局支持度,最終將計(jì)算后的頻繁項(xiàng)集保存在HDFS中。
5.1 用戶消費(fèi)能力分析
該算法目的是分析社區(qū)用戶每個(gè)人的消費(fèi)能力,并進(jìn)行賦分和排名。該算法實(shí)際業(yè)務(wù)作用為篩選重點(diǎn)消費(fèi)人群,并在后續(xù)社區(qū)開發(fā)中重點(diǎn)培養(yǎng)和關(guān)注。該模塊是用戶粒度,因此需要平鋪展開所有消費(fèi)指標(biāo)并計(jì)算比值,最后根據(jù)權(quán)重算法得出最終排名。算法流程圖如圖3所示。
5.2 借閱圖書用戶性別比例分析
該算法主要分析借閱群體在所有群體中的占比以及借閱群體中男女分布情況。該算法邏輯較為復(fù)雜,需要多個(gè)數(shù)據(jù)源分步計(jì)算多個(gè)指標(biāo),并需從不同維度上得到的臨時(shí)結(jié)果再度整合才能完成,算法流程圖如圖4所示。
5.3 用戶網(wǎng)絡(luò)使用高低峰分析
網(wǎng)絡(luò)使用高低峰算法主要分析在不同時(shí)間段社區(qū)用戶每個(gè)人的上網(wǎng)情況,并且分析出每個(gè)人上網(wǎng)的高峰期和低谷期,是用戶粒度的需求。算法流程圖如圖5所示。
6 用戶行為數(shù)據(jù)應(yīng)用
數(shù)據(jù)應(yīng)用方面,包括對數(shù)據(jù)的展示、數(shù)據(jù)智能推薦、用戶行為預(yù)測三部分。數(shù)據(jù)展示方面,是通過 Sprintboot提供的數(shù)據(jù)訪問接口,對Mybatis進(jìn)行持久化框架連接和應(yīng)用。同時(shí),Angular組件在系統(tǒng)中的應(yīng)用,可以加快信息數(shù)據(jù)應(yīng)用的響應(yīng)速度,有利于系統(tǒng)數(shù)據(jù)信息處理質(zhì)量的提升。最后,通過Echarts,將信息動(dòng)態(tài)以直觀的形式展示給用戶。在數(shù)據(jù)智能推薦方面,基于內(nèi)容過濾的推薦算法、雙重聚類算法的融合,形成混合推薦技術(shù)。通過該技術(shù)的應(yīng)用,可以對用戶行為日志進(jìn)行讀取、分析,并在此基礎(chǔ)上,對用戶行為進(jìn)行關(guān)于服務(wù)內(nèi)容的智能推薦。用戶行為預(yù)測方面,基于數(shù)據(jù)包的重組算法,可以根據(jù)用戶行為的相關(guān)數(shù)據(jù),實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)信息的重組。
7 結(jié)語
本文闡述了構(gòu)建用戶行為分析系統(tǒng)的背景及意義,考慮到海量評價(jià)數(shù)據(jù)所帶來的挑戰(zhàn),將數(shù)據(jù)存儲(chǔ)、處理及用戶行為模型構(gòu)建與Spark技術(shù)相結(jié)合,設(shè)計(jì)了基于大數(shù)據(jù)平臺(tái)的用戶行為分析系統(tǒng),系統(tǒng)主要包含用戶消費(fèi)能力分析模塊、用戶行為預(yù)測模塊,每個(gè)模塊有特定的功能,實(shí)現(xiàn)了用戶行為信息的有效分析和深度應(yīng)用,為社區(qū)管理者提供了進(jìn)行有效決策的數(shù)據(jù)展示。
作者簡介:
侯菡萏(1979.02—),女,漢,黑龍江省哈爾濱市,碩士,副教授,哈爾濱金融學(xué)院計(jì)算機(jī)系,研究方向:數(shù)據(jù)分析與數(shù)據(jù)挖掘。
課題:黑龍江省高等教育教學(xué)改革項(xiàng)目(SJGY20190265)《線上線下混合式“金課”的研究與實(shí)踐——以“數(shù)據(jù)庫原理及應(yīng)用”課程為例》