天天看點

Flink實時電商的使用者行為分析

本内容僅用于個人學習筆記

批處理

批處理主要操作大容量靜态資料集,并在計算過程完成後傳回結果。可以認為,處理的是用一個固定時間間隔分組的資料點集合。批處理模式中使用的資料集通常符合下列特征:

        – 有界:批處理資料集代表資料的有限集合

        – 持久:資料通常始終存儲在某種類型的持久存儲位置中

        – 大量:批處理操作通常是處理極為海量資料集的唯一方法

流處理

流處理可以對随時進入系統的資料進行計算。流處理方式無需針對整個資料集執行操作,而是對通過系統傳輸的每個資料項執行操作。流進行中的資料集是“無邊界”的,這就産生了幾個重要的影響:

        – 可以處理幾乎無限量的資料,但同一時間隻能處理一條資料,不同記錄間隻維持最少量的狀态。

        – 處理工作是基于事件的,除非明确停止否則沒有“盡頭”。

        – 處理結果立刻可用,并會随着新資料的抵達繼續更新。

        很好,回顧了批處理和流處理的差別之後,我們直接進入項目的整體介紹!

項目整體介紹

        電商平台中的使用者行為頻繁且較複雜,系統上線運作一段時間後,可以收集到大量的使用者行為資料,進而利用大資料技術進行深入挖掘和分析,得到感興趣的商業名額并增強對風險的控制。

        電商平台中的使用者行為頻繁且較複雜,系統上線運作一段時間後,可以收集到大量的使用者行為資料,進而利用大資料技術進行深入挖掘和分析,得到感興趣的商業名額并增強對風險的控制。

        電商使用者行為資料多樣,整體可以分為使用者行為習慣資料和業務行為資料兩大類。使用者的行為習慣資料包括了使用者的登入方式、上線的時間點及時長、點選和浏覽頁面、頁面停留時間以及頁面跳轉等等,我們可以從中進行流量統計和熱門商品的統計,也可以深入挖掘使用者的特征;這些資料往往可以從web伺服器日志中直接讀取到。而業務行為資料就是使用者在電商平台中針對每個業務(通常是某個具體商品)所作的操作,我們一般會在業務系統中相應的位置埋點,然後收集日志進行分析。業務行為資料又可以簡單分為兩類:一類是能夠明顯地表現出使用者興趣的行為,比如對商品的收藏、喜歡、評分和評價,我們可以從中對資料進行深入分析,得到使用者畫像,進而對使用者給出個性化的推薦商品清單,這個過程往往會用到機器學習相關的算法;另一類則是正常的業務操作,但需要着重關注一些異常狀況以做好風控,比如登入和訂單支付。

項目主要子產品

        基于對電商使用者行為資料的基本分類,我們可以發現主要有以下三個分析方向:

        1、熱門統計

        利用使用者的點選浏覽行為,進行流量統計、近期熱門商品統計等。

        2、偏好統計

        利用使用者的偏好行為,比如收藏、喜歡、評分等,進行使用者畫像分析,給出個性化的商品推薦清單。

        3、風險控制

        利用使用者的正常業務行為,比如登入、下單、支付等,分析資料,對異常情況進行報警提示。

總結:

統計分析

– 點選、浏覽

– 熱門商品、近期熱門商品、分類熱門商品、流量統計

統計分析

– 收藏、喜歡、評分、打标簽

– 使用者畫像,推薦清單(結合特征工程和機器學習算法)

風險控制

– 下訂單、支付、登入

– 刷單監控,訂單失效監控,惡意登入(短時間内頻繁登入失敗)監控

        大的方面,我們可以将其分為實時統計分析和業務流程及風險控制領域

        但本項目限于資料,我們隻實作熱門統計和風險控制中的部分内容,将包括以下四大子產品:實時熱門商品統計、實時流量統計、惡意登入監控、訂單支付失效監控

Flink實時電商的使用者行為分析

      項目子產品設計,可以參考這張圖:

Flink實時電商的使用者行為分析

        由于對實時性要求較高,我們會用flink作為資料處理的架構。在項目中,我們将綜合運用flink的各種API,基于EventTime去處理基本的業務需求,并且靈活地使用底層的processFunction,基于狀态程式設計和CEP去處理更加複雜的情形。

業務:

實時熱門商品統計:

(2條消息) Flink_實時熱門商品統計_遠方時光的部落格-CSDN部落格

熱門頁面浏覽數:

(2條消息) Flink_熱門頁面浏覽數_遠方時光的部落格-CSDN部落格

網站總浏覽量(PV)的統計:

(2條消息) Flink_網站總浏覽量(PV)的統計_遠方時光的部落格-CSDN部落格

網站獨立訪客數(UV):

(2條消息) Flink_網站獨立訪客數(UV)_遠方時光的部落格-CSDN部落格

APP 市場推廣 分管道統計(自定義測試資料源):

(2條消息) Flink_APP 市場推廣 分管道統計(自定義測試資料源)_遠方時光的部落格-CSDN部落格

頁面廣告點選量統計(黑名單過濾):

(2條消息) Flink_ 頁面廣告點選量統計(黑名單過濾)_遠方時光的部落格-CSDN部落格

惡意登入監控 (利用CEP):

(2條消息) Flink_惡意登入監控 (利用CEP)_遠方時光的部落格-CSDN部落格

訂單支付實時監控 (利用CEP):

(2條消息) Flink_訂單支付實時監控 (利用CEP)_遠方時光的部落格-CSDN部落格

來自兩條流的訂單交易比對(Connect, CoProcessFunction):

(2條消息) Flink_來自兩條流的訂單交易比對(Connect, CoProcessFunction)_遠方時光的部落格-CSDN部落格

兩條流intervalJoin(b流在a流規定時間範圍内jion):

(2條消息) Flink_兩條流intervalJoin(b流在a流規定時間範圍内jion)_遠方時光的部落格-CSDN部落格

資料源解析

電商使用者行為資料集的每一行表示一條使用者行為

case class UserBehavior(userId: Long,
                        itemId: Long,
                        categoryId: Int,
                        behavior: String,
                        timestamp: Long )      
字段名 資料類型 說明
userId Long 加密後的使用者ID
itemId Long 加密後的商品ID
categoryId Int 加密後的商品所屬類别ID
behavior  String 使用者行為類型,包括(‘pv’, ‘’buy, ‘cart’, ‘fav’)
timestamp Long 行為發生的時間戳,機關秒

web伺服器的日志資料,每一行日志記錄了通路者的IP、userId、通路時間、通路方法以及通路的url,具體描述如下:

web伺服器的日志樣例類:
case class ApacheLogEvent(ip: String,
                          userId:String,
                          timestamp: Long,
                          method: String,
                          url: String )      
字段名  資料類型  說明
ip String 通路的 IP
userId Long 通路的 user ID
eventTime Long 通路時間
method String 通路方法 GET/POST/PUT/DELETE
url  String 通路的 url
//登入事件
case class LoginEvent(userId: Long, ip: String, eventType: String, timeStamp: Long)
      
23064 66.249.3.15 fail 1558430826
5692 80.149.25.29 fail 1558430833
7233 86.226.15.75 success 1558430832

// 定義下單事件,到賬事件樣例類

case class OrderEvent(orderId: Long, eventType: String, txId: String, timestamp: Long) 

34729 create 1558430842
34730 create 1558430843
34729 pay sd76f87d6 1558430844
34730 pay 3hu3k2432 1558430844

case class ReceiptEvent(txId: String, payChannel: String, timestamp: Long) //txId 交易流水号 

ewr342as4 wechat 1558430845
sd76f87d6 wechat 1558430847
3hu3k2432 alipay 1558430848

繼續閱讀