Spark詳解(05-1) - SparkCore實戰案例
數據准備
本項目的數據是采集電商網站的用戶行為數據,主要包含用戶的4種行為:搜索、點擊、下單和支付。
(2)每一行表示用戶的一個行為,所以每一行只能是四種行為中的一種。
(4)針對下單行為,一次可以下單多個產品,所以品類id和產品id都是多個,id之間使用逗號分割。
編號 |
字段名稱 |
字段類型 |
字段含義 |
1 |
date |
String |
用戶點擊行為的日期 |
2 |
user_id |
Long |
用戶的ID |
3 |
session_id |
String |
Session的ID |
4 |
page_id |
Long |
某個頁面的ID |
5 |
action_time |
String |
動作的時間點 |
6 |
search_keyword |
String |
用戶搜索的關鍵詞 |
7 |
click_category_id |
Long |
點擊某一個商品品類的ID |
8 |
click_product_id |
Long |
某一個商品的ID |
9 |
order_category_ids |
String |
一次訂單中所有品類的ID集合 |
10 |
order_product_ids |
String |
一次訂單中所有商品的ID集合 |
11 |
pay_category_ids |
String |
一次支付中所有品類的ID集合 |
12 |
pay_product_ids |
String |
一次支付中所有商品的ID集合 |
13 |
city_id |
Long |
城市 id |
需求1:Top10熱門品類
需求說明:品類是指產品的分類,大型電商網站品類分多級,本項目中品類只有一級,不同的公司可能對熱門的定義不一樣。按照每個品類的點擊、下單、支付的量來統計熱門品類。
例如,綜合排名 = 點擊數*20% + 下單數*30% + 支付數*50%
本項目需求優化為:先按照點擊數排名,靠前的就排名高;如果點擊數相同,再比較下單數;下單數再相同,就比較支付數。
需求分析(方案一)分步計算
缺點:統計3次,需要啟動3個job,每個job都有對原始數據遍歷一次,效率低。
需求分析(方案二)常規算子
需求分析(方案三)樣例類
需求實現(方案三)
注意:樣例類的屬性默認是val修飾,不能修改;需要修改屬性,需要采用var修飾。
需求分析(方案四)樣例類+算子優化
針對方案三中的groupBy,沒有提前聚合的功能,替換成reduceByKey
需求實現(方案四)
需求分析(方案五)累加器
需求實現(方案五)
需求2:Top10熱門品類中每個品類的Top10活躍Session統計
需求分析
需求實現
需求3:頁面單跳轉化率統計
需求分析
產品經理和運營總監,可以根據這個指標,去嘗試分析,整個網站,產品,各個頁面的表現怎么樣,是不是需要去優化產品的布局;吸引用戶最終可以進入最后的支付頁面。
企業管理層,可以看到整個公司的網站,各個頁面的之間的跳轉的表現如何,可以適當調整公司的經營戰略或策略。
1-2/ 1 2-3/2 3-4/3 4-5/4 5-6/5 6-7/6