摘 要 在線教育用戶(hù)行為統(tǒng)計(jì)模塊以在線教育用戶(hù)行為統(tǒng)計(jì)為目標(biāo),使用大數(shù)據(jù)相關(guān)技術(shù),結(jié)合前后端技術(shù),對(duì)大量用戶(hù)行為數(shù)據(jù)進(jìn)行合理的分層統(tǒng)計(jì)。有效利用了在線教育平臺(tái)的數(shù)據(jù)評(píng)估用戶(hù)價(jià)值、提高服務(wù)質(zhì)量,提升在線教育平臺(tái)的成交轉(zhuǎn)化率。
關(guān)鍵詞 行為統(tǒng)計(jì);大數(shù)據(jù);數(shù)據(jù)分析
引言
在線教育平臺(tái)用戶(hù)量不斷增加,隨之產(chǎn)生了大量用戶(hù)行為數(shù)據(jù),如何善用這些數(shù)據(jù)評(píng)估用戶(hù)價(jià)值、精準(zhǔn)提供服務(wù)、提高平臺(tái)成交率是在線教育用戶(hù)行為統(tǒng)計(jì)模塊的設(shè)計(jì)目標(biāo)。模塊依托大數(shù)據(jù)技術(shù),將用戶(hù)行為的數(shù)據(jù)采集、統(tǒng)計(jì)、展示到前端供分析師和平臺(tái)使用,以便更好展開(kāi)線上服務(wù)的個(gè)性化推送以及流動(dòng)推廣。
1模塊介紹
模塊以在線教育用戶(hù)行為統(tǒng)計(jì)為目標(biāo),對(duì)大量用戶(hù)行為數(shù)據(jù)進(jìn)行合理的分層統(tǒng)計(jì),建立數(shù)據(jù)倉(cāng)庫(kù),對(duì)平臺(tái)產(chǎn)生的用戶(hù)行為的各類(lèi)指標(biāo)進(jìn)行統(tǒng)計(jì)展示。模塊設(shè)計(jì)的流程從數(shù)據(jù)采集開(kāi)始,使用Apache的開(kāi)源項(xiàng)目Flume組件,完成對(duì)服務(wù)器端日志、APP端產(chǎn)生的SDK日志等數(shù)據(jù)的采集,將其傳輸?shù)较⒅虚g件kafka中,實(shí)時(shí)、離線部分分別使用Spark流式計(jì)算框架與hive計(jì)算引擎完成對(duì)數(shù)據(jù)的清洗、統(tǒng)計(jì),原始及中間數(shù)據(jù)存放在hdfs分布式文件緩存模塊中,報(bào)表數(shù)據(jù)存放在指定的MySql數(shù)據(jù)庫(kù)。最后,采用Echars前端框架完成對(duì)統(tǒng)計(jì)結(jié)果的展示[1]。
2模塊分析
模塊開(kāi)發(fā)使用spark或者h(yuǎn)ive計(jì)算引擎,代碼類(lèi)型為scala與hive sql語(yǔ)句,開(kāi)發(fā)工具為Idea與sublime Text3。模塊運(yùn)行需要用到Linux虛擬服務(wù)器和Flume和Kafka集群。模塊的分析統(tǒng)計(jì)結(jié)果可以服務(wù)于各種平臺(tái)及大數(shù)據(jù)分析、決策人員。數(shù)據(jù)管理平臺(tái)、BOSS看板、數(shù)據(jù)指標(biāo)體系等會(huì)根據(jù)用戶(hù)行為數(shù)據(jù)的特點(diǎn)以及現(xiàn)有的日志數(shù)據(jù),對(duì)用戶(hù)產(chǎn)生的日志統(tǒng)計(jì);分析人員可以通過(guò)數(shù)據(jù)統(tǒng)計(jì)結(jié)果,進(jìn)行漏斗轉(zhuǎn)化分析、跳轉(zhuǎn)率與銷(xiāo)售等指標(biāo)分析;決策人員觀看數(shù)據(jù)最終的統(tǒng)計(jì)結(jié)果與分析人員的分析結(jié)果,為業(yè)務(wù)發(fā)展走向做出決策[2]。
3模塊的設(shè)計(jì)
3.1 總體設(shè)計(jì)
在線教育用戶(hù)行為統(tǒng)計(jì)模塊是基于大數(shù)據(jù)生態(tài)圈組件實(shí)現(xiàn)的,通過(guò)日志數(shù)據(jù)到結(jié)果數(shù)據(jù)的流動(dòng)方向,進(jìn)行在線教育平臺(tái)用戶(hù)行為日志模塊的總體架構(gòu)設(shè)計(jì)。
數(shù)據(jù)在手機(jī)端由定義好的SDK或者服務(wù)器端產(chǎn)生的用戶(hù)行為日志,由Flume集群收集各個(gè)服務(wù)器的數(shù)據(jù)并按照Topic主題的劃分傳輸?shù)終afka集群,由于數(shù)據(jù)量較大,所以Flume與kafka都是以集群的方式分擔(dān)數(shù)據(jù)的壓力。在放入消息緩存中間件kafka之后,使用計(jì)算引擎進(jìn)行統(tǒng)計(jì)時(shí),需要用到數(shù)據(jù)倉(cāng)庫(kù)建模思想,采用星型模型建模方式,按主題域?qū)I(yè)務(wù)進(jìn)行劃分,然后采用數(shù)據(jù)倉(cāng)庫(kù)分層的思想,一層一層的將數(shù)據(jù)抽取出來(lái)。
3.2 功能設(shè)計(jì)
根據(jù)數(shù)據(jù)的特點(diǎn)與需求指標(biāo)模塊功能分為實(shí)時(shí)子模塊與離線子模塊,在這兩個(gè)子模塊的基礎(chǔ)上,根據(jù)在線教育平臺(tái)的業(yè)務(wù)進(jìn)行細(xì)致劃分。離線模塊主要是做題和注冊(cè),由于實(shí)時(shí)模塊的數(shù)據(jù)統(tǒng)計(jì)有實(shí)時(shí)性的需求,針對(duì)為需求指標(biāo)統(tǒng)計(jì)要單獨(dú)處理。
本模塊的功能設(shè)計(jì)是參照數(shù)據(jù)管理平臺(tái)中的數(shù)據(jù)概覽進(jìn)行設(shè)計(jì)的。數(shù)據(jù)概覽是數(shù)據(jù)管理平臺(tái)的一個(gè)模塊,是指將數(shù)據(jù)進(jìn)行收集、統(tǒng)計(jì),按照主題與需求進(jìn)行報(bào)表展示的一個(gè)子平臺(tái)。模塊將在線教育平臺(tái)產(chǎn)生的大量用戶(hù)數(shù)據(jù),使用大數(shù)據(jù)生態(tài)組件,進(jìn)行數(shù)據(jù)的收集、規(guī)整、按照數(shù)據(jù)倉(cāng)庫(kù)思想進(jìn)行統(tǒng)計(jì)、展示。
3.3 數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)
星型模型是數(shù)據(jù)倉(cāng)庫(kù)中常用的模型,是以一個(gè)事實(shí)表為中心,周?chē)鷩@關(guān)聯(lián)多個(gè)維度表。采用此模型對(duì)本模塊進(jìn)行數(shù)據(jù)倉(cāng)庫(kù)模型搭建。建立數(shù)據(jù)倉(cāng)庫(kù),要通過(guò)業(yè)務(wù)調(diào)研、需求調(diào)研與數(shù)據(jù)調(diào)研三步,先根據(jù)業(yè)務(wù)劃分主題域,確定主題,然后利用維度建模思想和星型模型的方法,構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的總線矩陣。數(shù)據(jù)倉(cāng)庫(kù)分層架構(gòu)一般可以分為四層,分別為ODS貼源層、DWD明細(xì)層、DWS輕度匯總層和APP應(yīng)用層,訂制相應(yīng)的規(guī)范。數(shù)據(jù)倉(cāng)庫(kù)初步建成后,進(jìn)行數(shù)據(jù)質(zhì)量、數(shù)據(jù)安全和元數(shù)據(jù)管理等數(shù)據(jù)治理,然后迭代開(kāi)發(fā)。
數(shù)據(jù)倉(cāng)庫(kù)的設(shè)計(jì)流程包括數(shù)據(jù)倉(cāng)庫(kù)模型設(shè)計(jì)、數(shù)據(jù)表的設(shè)計(jì)、數(shù)據(jù)同步、數(shù)據(jù)分析、HQL優(yōu)化和報(bào)表展示。數(shù)據(jù)倉(cāng)庫(kù)一般設(shè)計(jì)為ODS層,DW主題層,DIM維表層和DM集市層, 除此之外,還有處理分表合并的STG層,存放臨時(shí)表Temp層,MID中間層即DW向DM的過(guò)渡層。
DW的主題有七大主題域,由于只針對(duì)用戶(hù)行為日志進(jìn)行收集統(tǒng)計(jì),因此所實(shí)現(xiàn)的目標(biāo)只有用戶(hù)主題域。數(shù)據(jù)表設(shè)計(jì)采用事實(shí)表+維度表的方式,數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)一般來(lái)源于業(yè)務(wù)庫(kù)還有日志。業(yè)務(wù)庫(kù)是用Sqoop從備用庫(kù)進(jìn)行全量與增量的,用Azkaban定時(shí)調(diào)度。日志數(shù)據(jù)就是SDK和埋點(diǎn)數(shù)據(jù),從Nginx服務(wù)器被Flume采集到Kafka集群。為了保持?jǐn)?shù)據(jù)一致性,不是直接落到HDFS,而是落到Kafka之后通過(guò)一層Flume再落到HDFS。二次迭代時(shí)對(duì)業(yè)務(wù)庫(kù)的采集可以使用Camus+Canal的方式對(duì)Mysql的Binlog進(jìn)行采集解析,對(duì)數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行增量更新。
各個(gè)數(shù)據(jù)倉(cāng)庫(kù)的層級(jí),ODS貼源層存放原始數(shù)據(jù),DWD明細(xì)層結(jié)構(gòu)與原始表結(jié)構(gòu)保持一致,對(duì)ODS貼源層數(shù)據(jù)進(jìn)行清洗,DWS輕度匯總層以DWD明細(xì)層為基礎(chǔ)進(jìn)行輕度匯總,APP報(bào)表層為各種統(tǒng)計(jì)報(bào)表提供數(shù)據(jù)。
4結(jié)束語(yǔ)
本模塊對(duì)在線教育平臺(tái)產(chǎn)生的用戶(hù)日志數(shù)據(jù)進(jìn)行分類(lèi)標(biāo)注,使用大數(shù)據(jù)技術(shù)對(duì)學(xué)習(xí)過(guò)程和學(xué)習(xí)行為等進(jìn)行多維度剖析,根據(jù)分析結(jié)果為每位平臺(tái)用戶(hù)生成個(gè)性化學(xué)習(xí)計(jì)劃,確保線上教育獲得良好成效。同時(shí),在線教育平臺(tái)積攢的海量數(shù)據(jù)也能夠反饋到教學(xué)環(huán)節(jié),為課程教學(xué)設(shè)計(jì)和實(shí)施提供參考和依據(jù)。
參考文獻(xiàn)
[1] 佚名.你根本不懂?dāng)?shù)據(jù)倉(cāng)庫(kù)!對(duì)于80%的大公司數(shù)倉(cāng)只是地基,它才是房子[EB/OL].https://www.toutiao.com/i6847780721843667469/,2020-7-10.
[2] 數(shù)據(jù)倉(cāng)庫(kù)的分層設(shè)計(jì)[EB/OL].https://blog.csdn.net/mcajax/article/details/104315625,2020-2-14.
作者簡(jiǎn)介
商鵬,女,山東淄博人;學(xué)歷:碩士,職稱(chēng):講師,現(xiàn)就職單位:山東理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,研究方向:軟件工程與軟件建模。