陳 偉
(宿州職業(yè)技術(shù)學(xué)院計(jì)算機(jī)信息系 安徽·宿州 234101)
隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)上購(gòu)物日益普及,網(wǎng)購(gòu)數(shù)據(jù)規(guī)模呈幾何級(jí)增長(zhǎng)。中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心2020年9月29日發(fā)布的《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》[1]中顯示,截至2020年6月,我國(guó)網(wǎng)絡(luò)購(gòu)物用戶規(guī)模達(dá)7.49億,較2020年3月增長(zhǎng)3912萬(wàn),占網(wǎng)民整體的79.7%。電商用戶行為數(shù)據(jù)中蘊(yùn)含著大量有價(jià)值的信息,對(duì)海量行為數(shù)據(jù)進(jìn)行挖掘分析得出用戶行為規(guī)律并進(jìn)行決策制定,對(duì)電商企業(yè)來(lái)說(shuō)尤為重要。傳統(tǒng)的單機(jī)處理及關(guān)系數(shù)據(jù)庫(kù)已無(wú)法滿足大規(guī)模數(shù)據(jù)處理和分析需求,大數(shù)據(jù)技術(shù)的出現(xiàn)為海量數(shù)據(jù)的存儲(chǔ)、分析等提供了技術(shù)支撐。文獻(xiàn)[2]利用Hadoop設(shè)計(jì)用戶行為分析引擎,并與傳統(tǒng)單機(jī)處理進(jìn)行對(duì)比,處理效率優(yōu)勢(shì)明顯;文獻(xiàn)[3]介紹了網(wǎng)絡(luò)用戶消費(fèi)行為大數(shù)據(jù)分析對(duì)電商營(yíng)銷策略的影響;文獻(xiàn)[4-8]詳細(xì)闡述了Hadoop分布式架構(gòu)及數(shù)據(jù)分析方法,文獻(xiàn)[9]利用Hadoop設(shè)計(jì)了用戶行為分析系統(tǒng),提高了分析效率;文獻(xiàn)[10]設(shè)計(jì)的移動(dòng)用戶上網(wǎng)行為分析系統(tǒng)能夠幫助運(yùn)營(yíng)商準(zhǔn)確定位用戶需求,為用戶提供個(gè)性化服務(wù)。本文在上述研究的基礎(chǔ)上,從電商用戶行為入手,展開(kāi)對(duì)Hadoop電商用戶行為系統(tǒng)的研究。
Hadoop是Apache公司的一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu)[11][12],擁有高可靠性、高擴(kuò)展性、高效性、低成本等特點(diǎn)[13],主要包括HDFS(Hadoop Distributed File System)分布式文件系統(tǒng)和MapReduce分布式計(jì)算框架,利用Hadoop集群可以實(shí)現(xiàn)海量數(shù)據(jù)的高速存儲(chǔ)和并行計(jì)算, 與傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)相比,Hadoop在大數(shù)據(jù)處理方面具有諸多優(yōu)勢(shì)[14-15]。Hadoop生態(tài)圈中還包含其他開(kāi)源的子項(xiàng)目,如分布式數(shù)據(jù)倉(cāng)庫(kù)Hive,分布式協(xié)調(diào)服務(wù)Zookeeper,分布式、按列存儲(chǔ)數(shù)據(jù)庫(kù)HBase等,如圖1所示。
圖1 Hadoop生態(tài)圈
HDFS分布式文件系統(tǒng)采用流式數(shù)據(jù)存儲(chǔ),部署成本較低,能夠運(yùn)行在廉價(jià)的硬件上,具有高容錯(cuò)、低成本、高性能、高吞吐量等特點(diǎn)[16],主要用于大數(shù)據(jù)的分布式存儲(chǔ)。HDFS采用主從結(jié)構(gòu),包含一個(gè)名字節(jié)點(diǎn)NameNode和若干個(gè)數(shù)據(jù)節(jié)點(diǎn)DataNode[17],名字節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)元數(shù)據(jù),真實(shí)數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)節(jié)點(diǎn)。HDFS把文件分割為多個(gè)數(shù)據(jù)塊進(jìn)行存儲(chǔ),采用副本機(jī)制,把塊數(shù)據(jù)復(fù)制多個(gè)副本存儲(chǔ)在不同節(jié)點(diǎn),實(shí)現(xiàn)數(shù)據(jù)的分布存儲(chǔ),提高數(shù)據(jù)讀寫(xiě)的效率,保證了數(shù)據(jù)的可靠性。
MapReduce分布式計(jì)算框架主要用于大規(guī)模數(shù)據(jù)的并行計(jì)算,分為Map和Reduce兩個(gè)階段,提供了簡(jiǎn)便的分布式計(jì)算編程模型,程序員無(wú)須關(guān)心MapReduce分布式處理細(xì)節(jié),只需按照MapReduce規(guī)范編寫(xiě)程序?qū)崿F(xiàn)Map函數(shù)和Reduce函數(shù)業(yè)務(wù)邏輯,系統(tǒng)便能在集群節(jié)點(diǎn)上自動(dòng)分配和執(zhí)行任務(wù),完成數(shù)據(jù)的并行計(jì)算和處理[18]。
Hive是基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu),可以實(shí)現(xiàn)大規(guī)模數(shù)據(jù)的查詢和統(tǒng)計(jì)分析。Hive將數(shù)據(jù)映射為數(shù)據(jù)庫(kù)中的表,利用類似SQL的HiveQL查詢語(yǔ)言實(shí)現(xiàn)查詢分析功能,HiveQL語(yǔ)句會(huì)在執(zhí)行時(shí)自動(dòng)轉(zhuǎn)化為MapReduce任務(wù)在Hadoop集群上執(zhí)行[16]。Hive本身不具備存儲(chǔ)功能,所有數(shù)據(jù)存儲(chǔ)在HDFS中,元數(shù)據(jù)則保存在關(guān)系數(shù)據(jù)庫(kù)中。Hive處理大規(guī)模數(shù)據(jù)集時(shí)延遲較高,不適用于數(shù)據(jù)的實(shí)時(shí)查詢,主要用于數(shù)據(jù)離線分析、日志分析,如電商網(wǎng)站用戶行為分析。
本文系統(tǒng)主要實(shí)現(xiàn)用戶行為的統(tǒng)計(jì)和行為分析,主要功能包括數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分析、數(shù)據(jù)可視化等,系統(tǒng)整體架構(gòu)如圖2,系統(tǒng)數(shù)據(jù)處理流程如圖3。
圖2 系統(tǒng)整體架構(gòu)
圖3 系統(tǒng)數(shù)據(jù)流圖
采集層:利用Flume采集電商服務(wù)器端用戶行為數(shù)據(jù),把數(shù)據(jù)處理后發(fā)送至HDFS。
存儲(chǔ)層:用戶行為數(shù)據(jù)采集上傳至HDFS存儲(chǔ),導(dǎo)入到數(shù)據(jù)倉(cāng)庫(kù)Hive進(jìn)行計(jì)算處理,分析結(jié)果保存至MySql數(shù)據(jù)庫(kù)中。
計(jì)算層:根據(jù)分析需求建立分析需求模型,利用HiveQL啟動(dòng)集群MapReduce任務(wù)對(duì)預(yù)先處理后用戶行為數(shù)據(jù)進(jìn)行分析處理,挖掘用戶行為規(guī)律。服務(wù)層:處于展示層和計(jì)算層之間,利用Python語(yǔ)言編寫(xiě)程序,把計(jì)算層分析結(jié)果傳送至展示層。
展示層:根據(jù)MySql中保存的計(jì)算結(jié)果,利用pyecharts可視化工具把用戶行為數(shù)據(jù)以圖表形式呈現(xiàn),方便分析者快速理解和分析數(shù)據(jù)。
Sqoop是一款開(kāi)源的分布式數(shù)據(jù)遷移工具,主要用于Hive與傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)間數(shù)據(jù)傳遞。本文采用Sqoop工具實(shí)現(xiàn)Hive與Mysql的數(shù)據(jù)互導(dǎo),為pyecharts數(shù)據(jù)可視化提供數(shù)據(jù)來(lái)源。
1.系統(tǒng)部署
為簡(jiǎn)化系統(tǒng)部署,該系統(tǒng)采用VMware虛擬機(jī)方式搭建Hadoop分布式集群,集群中1個(gè)master節(jié)點(diǎn)作為NameNode和2個(gè)slave節(jié)點(diǎn)作為DateNode,節(jié)點(diǎn)操作系統(tǒng)均安裝64位ubuntu16.04LTS,安裝Hadoop、Hive、Sqoop、JDK、MySQL等軟件,并完成相關(guān)配置。
在windows宿主機(jī)上安裝Python3.8,通過(guò)pip工具安裝pyecharts和Jupyter Notebook, 利用Jupyter Notebook可執(zhí)行編寫(xiě)好的python程序生成pyecharts圖表,實(shí)現(xiàn)數(shù)據(jù)可視化。
2.數(shù)據(jù)預(yù)處理
本次用戶分析使用阿里云天池?cái)?shù)據(jù)進(jìn)行模擬,數(shù)據(jù)集為UserBehavior.csv,為淘寶2017年11月25日至2017年12月3日共9天的用戶行為記錄。該數(shù)據(jù)集約1億條記錄(100,150,807),包含用戶數(shù)量987,994個(gè),每條記錄由用戶ID、商品ID、商品類目ID、行為類型和時(shí)間戳組成。把數(shù)據(jù)集上傳至HDFS中進(jìn)行存儲(chǔ),在Hive中創(chuàng)建數(shù)據(jù)庫(kù)User_Behavior,根據(jù)數(shù)據(jù)集中字段創(chuàng)建用戶行為臨時(shí)表user_1,通過(guò)HiveQL語(yǔ)句對(duì)數(shù)據(jù)集中數(shù)據(jù)進(jìn)行空值及重復(fù)值處理,利用Hive中日期函數(shù)把times時(shí)間戳字段進(jìn)行轉(zhuǎn)換,得到日期、小時(shí)以備分析數(shù)據(jù)使用。處理后數(shù)據(jù)寫(xiě)入新表user_action,字段結(jié)構(gòu)如下表1所示。
表1 user_ac t i on表結(jié)構(gòu)f
其中,用戶行為類型字段的值包括pv(瀏覽)、cart(加購(gòu)物車)、fav(收藏)、buy(下單)。數(shù)據(jù)集中存在當(dāng)前時(shí)間范圍之外的不符合規(guī)定的異常數(shù)據(jù),需要進(jìn)行清除,最后預(yù)處理完后的數(shù)據(jù)記錄數(shù)為100,095,133條。
3.數(shù)據(jù)分析
(1)統(tǒng)計(jì)每日新增首次下單用戶。以2017年11月25日為第一天開(kāi)始計(jì)算。
統(tǒng)計(jì)結(jié)果如圖4,9天中每天都有新用戶下單,每日下單數(shù)在減少,到12月2日周六時(shí)有所回升,推測(cè)應(yīng)該是與周末促銷活動(dòng)刺激有關(guān)。
圖4 每日新增首次下單用戶情況
(2)統(tǒng)計(jì)新增下單用戶的留存情況。統(tǒng)計(jì)每天新增下單用戶的次日、3日、5日、7日留存用戶數(shù)和留存率,進(jìn)而分析淘寶下單用戶的流失情況,如圖5所示。結(jié)果表明,淘寶用戶的次日、3日、5日、7日留存率基本維持在20%左右,網(wǎng)站可根據(jù)留存率情況分析用戶流失原因,進(jìn)行適時(shí)的策略調(diào)整。
圖5 用戶留存情況
(3)用戶行為轉(zhuǎn)化
行為轉(zhuǎn)化(PV):PV是用戶瀏覽商品詳情頁(yè)面的點(diǎn)擊數(shù)總和,根據(jù)PV瀏覽記錄、收藏+加購(gòu)記錄、購(gòu)買記錄來(lái)構(gòu)建行為轉(zhuǎn)化模型。匯總所有用戶行為結(jié)果如圖6。瀏覽到有購(gòu)買意向階段轉(zhuǎn)化率為9.39%((fav+cart)/pv),瀏覽到購(gòu)買轉(zhuǎn)化率為2.25%(buy/pv),說(shuō)明購(gòu)買商品前用戶會(huì)有大量的商品詳情頁(yè)點(diǎn)擊瀏覽,約為44次 (pv/buy=89660654/2015775)。如果能夠根據(jù)用戶需求個(gè)性推薦,可提高轉(zhuǎn)化率,減少用戶瀏覽成本。
圖6 用戶行為匯總
用戶轉(zhuǎn)化(UV):UV為訪問(wèn)商品頁(yè)面的獨(dú)立訪客數(shù),用戶轉(zhuǎn)化率是下單購(gòu)買用戶占總瀏覽用戶的比例,分析結(jié)果如圖7,從瀏覽商品詳情頁(yè)到夠買的用戶轉(zhuǎn)化率達(dá)68.3%(buy/pv),可見(jiàn)淘寶網(wǎng)站用戶轉(zhuǎn)化率較高,說(shuō)明平臺(tái)用戶體驗(yàn)、產(chǎn)品服務(wù)、用戶需求、信任度等各方面得到用戶認(rèn)可。
圖7 獨(dú)立訪客用戶行為
(4)每天用戶行為情況
由圖8可見(jiàn),9天中前7天的用戶活躍情況相對(duì)平穩(wěn),到12月2日和3日收藏?cái)?shù)、加購(gòu)數(shù)、購(gòu)買數(shù)都出現(xiàn)小幅增長(zhǎng),尤其加購(gòu)數(shù)增幅明顯,對(duì)比同為周末的11月25日和26日的表現(xiàn),推測(cè)后個(gè)周末可能會(huì)有促銷活動(dòng)或與雙十二大促有關(guān),用戶數(shù)、訪問(wèn)量大幅增加,加購(gòu)數(shù)增幅較大說(shuō)明用戶正為促銷時(shí)批量購(gòu)買商品做好準(zhǔn)備。
圖8 每天用戶行為情況
(5)各時(shí)段用戶行為情況
為了能夠更客觀地分析不同時(shí)段的用戶行為,把9天中的各個(gè)時(shí)段數(shù)據(jù)匯總一起來(lái)觀察各個(gè)用戶行為變化趨勢(shì),如圖9所示。
圖9 每時(shí)段用戶行為情況
可見(jiàn),訪問(wèn)量、用戶數(shù)等5項(xiàng)指標(biāo)變化趨勢(shì)基本吻合,0點(diǎn)到3點(diǎn)各項(xiàng)指標(biāo)急劇下滑,4點(diǎn)到達(dá)最低值,5點(diǎn)到10點(diǎn)逐步回升,10點(diǎn)至18點(diǎn)相對(duì)平穩(wěn),18點(diǎn)迅速上升,到21、22點(diǎn)到達(dá)最高峰,22點(diǎn)以后又開(kāi)始下降。這也符合人們正常作息時(shí)間規(guī)律,從轉(zhuǎn)化率角度來(lái)看上午10點(diǎn)左右點(diǎn)擊-購(gòu)買和(收藏+加購(gòu))-購(gòu)買行為路徑轉(zhuǎn)化率最高,而用戶數(shù)高峰時(shí)段轉(zhuǎn)化率卻在降低,如圖10所示。因此,可以考慮在18點(diǎn)至22點(diǎn)之間推出力度較大的促銷活動(dòng)或上架新商品等方式來(lái)提高轉(zhuǎn)化率。
圖10 各個(gè)時(shí)段轉(zhuǎn)化率
利用Hadoop平臺(tái)設(shè)計(jì)電商用戶行為分析系統(tǒng),對(duì)HDFS、Hive等關(guān)鍵技術(shù)進(jìn)行了闡述,從數(shù)據(jù)處理、數(shù)據(jù)分析、數(shù)據(jù)存儲(chǔ)等方面入手進(jìn)行系統(tǒng)設(shè)計(jì),以淘寶用戶行為數(shù)據(jù)集為例詳細(xì)介紹了數(shù)據(jù)分析處理的實(shí)現(xiàn)過(guò)程,最后對(duì)數(shù)據(jù)處理結(jié)果進(jìn)行存儲(chǔ)并可視化。結(jié)果表明該系統(tǒng)能夠根據(jù)用戶行為習(xí)慣、用戶行為轉(zhuǎn)化等不同維度對(duì)用戶行為進(jìn)行挖掘分析,可為電商平臺(tái)調(diào)整營(yíng)銷策略、提升用戶體驗(yàn)等方面提供參考建議和數(shù)據(jù)支撐。本文主要是利用Hadoop技術(shù)進(jìn)行離線數(shù)據(jù)的分析,下一步工作將進(jìn)一步優(yōu)化該系統(tǒng),實(shí)現(xiàn)日志數(shù)據(jù)的實(shí)時(shí)分析和處理。