本内容僅用于個人學習筆記
批處理
批處理主要操作大容量靜态資料集,并在計算過程完成後傳回結果。可以認為,處理的是用一個固定時間間隔分組的資料點集合。批處理模式中使用的資料集通常符合下列特征:
– 有界:批處理資料集代表資料的有限集合
– 持久:資料通常始終存儲在某種類型的持久存儲位置中
– 大量:批處理操作通常是處理極為海量資料集的唯一方法
流處理
流處理可以對随時進入系統的資料進行計算。流處理方式無需針對整個資料集執行操作,而是對通過系統傳輸的每個資料項執行操作。流進行中的資料集是“無邊界”的,這就産生了幾個重要的影響:
– 可以處理幾乎無限量的資料,但同一時間隻能處理一條資料,不同記錄間隻維持最少量的狀态。
– 處理工作是基于事件的,除非明确停止否則沒有“盡頭”。
– 處理結果立刻可用,并會随着新資料的抵達繼續更新。
很好,回顧了批處理和流處理的差別之後,我們直接進入項目的整體介紹!
項目整體介紹
電商平台中的使用者行為頻繁且較複雜,系統上線運作一段時間後,可以收集到大量的使用者行為資料,進而利用大資料技術進行深入挖掘和分析,得到感興趣的商業名額并增強對風險的控制。
電商平台中的使用者行為頻繁且較複雜,系統上線運作一段時間後,可以收集到大量的使用者行為資料,進而利用大資料技術進行深入挖掘和分析,得到感興趣的商業名額并增強對風險的控制。
電商使用者行為資料多樣,整體可以分為使用者行為習慣資料和業務行為資料兩大類。使用者的行為習慣資料包括了使用者的登入方式、上線的時間點及時長、點選和浏覽頁面、頁面停留時間以及頁面跳轉等等,我們可以從中進行流量統計和熱門商品的統計,也可以深入挖掘使用者的特征;這些資料往往可以從web伺服器日志中直接讀取到。而業務行為資料就是使用者在電商平台中針對每個業務(通常是某個具體商品)所作的操作,我們一般會在業務系統中相應的位置埋點,然後收集日志進行分析。業務行為資料又可以簡單分為兩類:一類是能夠明顯地表現出使用者興趣的行為,比如對商品的收藏、喜歡、評分和評價,我們可以從中對資料進行深入分析,得到使用者畫像,進而對使用者給出個性化的推薦商品清單,這個過程往往會用到機器學習相關的算法;另一類則是正常的業務操作,但需要着重關注一些異常狀況以做好風控,比如登入和訂單支付。
項目主要子產品
基于對電商使用者行為資料的基本分類,我們可以發現主要有以下三個分析方向:
1、熱門統計
利用使用者的點選浏覽行為,進行流量統計、近期熱門商品統計等。
2、偏好統計
利用使用者的偏好行為,比如收藏、喜歡、評分等,進行使用者畫像分析,給出個性化的商品推薦清單。
3、風險控制
利用使用者的正常業務行為,比如登入、下單、支付等,分析資料,對異常情況進行報警提示。
總結:
統計分析
– 點選、浏覽
– 熱門商品、近期熱門商品、分類熱門商品、流量統計
統計分析
– 收藏、喜歡、評分、打标簽
– 使用者畫像,推薦清單(結合特征工程和機器學習算法)
風險控制
– 下訂單、支付、登入
– 刷單監控,訂單失效監控,惡意登入(短時間内頻繁登入失敗)監控
大的方面,我們可以将其分為實時統計分析和業務流程及風險控制領域
但本項目限于資料,我們隻實作熱門統計和風險控制中的部分内容,将包括以下四大子產品:實時熱門商品統計、實時流量統計、惡意登入監控、訂單支付失效監控
項目子產品設計,可以參考這張圖:
由于對實時性要求較高,我們會用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 | 1558430845 | |
sd76f87d6 | 1558430847 | |
3hu3k2432 | alipay | 1558430848 |