基礎數據結構 user_visit_action 點擊流數據 (hive表) date //日期:代表用戶點擊行為是在哪一天發生 user_id //代表這個點擊行為是哪一個用戶執行的 session_id //唯一標識了某個用戶的一個訪問session page_id //頁面的id,點擊品類,進 ...
基礎數據結構
- user_visit_action 點擊流數據 (hive表)
date //日期:代表用戶點擊行為是在哪一天發生 採用時間戳好比較 user_id //代表這個點擊行為是哪一個用戶執行的 session_id //唯一標識了某個用戶的一個訪問session page_id //頁面的id,點擊品類,進入某個頁面 action_time//這個點擊行為發生的時間點 search_keyword //搜索的關鍵詞 click_category_id //網站首頁點擊了某個品類 click_product_id //網站列表頁點擊了某個商品 order_category_ids //代表了將某些商品加入了購物車,然後一次性的對商品下了單,某次下單行為中,有哪些商品品類 order_product_ids //某次下單行為中,有哪些商品 pay_category_ids //一次支付行為中對應了哪些品類 pay_product_ids //支付行為中,對應了哪些具體的商品
- user_info 用戶信息表(hive表)
user_id //用戶的唯一標識 username //用戶的登錄名 name //用戶名 age //年齡 professinal //職業 city //城市
-
task表(mysql表)
task_id //主鍵 task_name //任務名稱 create_time //創建時間 start_time //開始運行的時間 finish_time //結束運行的時間 task_type //任務類型 task_status //任務狀態,對應spark作業運行的狀態 task_param //用來使用json的格式來封裝用戶提交的任務的特殊篩選參數
- 交互流程
1.j2ee平臺的使用者,向平臺提交任務(包含任務參數),並將任務插入到mysql表中的task表
2.Runtime,Process等API去執行一個封裝了spark-submit命令的linux的shell腳本
3.然後編寫jar提交spark集群中運行
需求分析
-
按條件篩選session
1.搜索過某些關鍵詞的用戶
2.訪問時間在某個時間段內的用戶
3.年齡在某個範圍內的用戶
4.職業在某個範圍內的用戶
5.某個城市發起的session
功能作用:對感興趣的用戶群體進行業務分析
-
統計出符合條件的session,訪問時長在1s~3s,4s~6s,7s~9s,10s~30s,30s~60s,1m~3m,3m~10m,10m~30m
,30m以上的各範圍的session占比,訪問步長(訪問時長除於點擊的頁面)在1~3,4~6,7~9,10~30,30~60,60以上的各範圍內的session占比
功能作用:從全局的角度,符合某些條件的用戶群體,使用我們的產品的一些習慣
- 在符合條件的session中,按照時間比例隨機抽取1000個session
功能作用:對於符合條件的session,按照時間比例採樣,具體觀察每個session的點擊流行為
- 在符合條件的session中,獲取點擊,下單和支付數量排名前10的品類
- 對於排名前10的品類,分別獲取其點擊次數排名前10的session
技術架構設計
數據表結構設計(MySQL面向結果)
- session_aggr_stat 存儲session聚合統計的結果
CREATE TABLE `session_aggr_stat`( `task_id` int(11) NOT NULL, `session_count` int(11) DEFAULT NULL, `1s_3s` double DEFAULT NULL, `4s_6s` double DEFAULT NULL, `7s_9s` double DEFAULT NULL, `10s_30s` double DEFAULT NULL, `30s_60s` double DEFAULT NULL, `1m_3m` double DEFAULT NULL, `3m_10m` double DEFAULT NULL, `10m_30m` double DEFAULT NULL, `30m` double DEFAULT NULL, `1_3` double DEFAULT NULL, `4_6` double DEFAULT NULL, `7_9` double DEFAULT NULL, `10_30` double DEFAULT NULL, `30_60` double DEFAULT NULL, `60` double DEFAULT NULL, PRIMARY KEY (`task_id`) )ENGINE=InnoDB
- session_random_extract 存儲按時間比例隨機抽取出來的1000的session
CREATE TABLE `session_random_extract`( `task_id` int(11) NOT NULL, `session_id` varchar(255) DEFAULT NULL, `start_time` varchar(50) DEFAULT NULL, `end_time` varchar(50) DEFAULT NULL, `search_keywords` varchar(255) DEFAULT NULL, PRIMARY KEY (`task_id`) )
- top10_category 存儲按點擊,下單,支付的品類數據
CREATE TABLE `top10_category`( `task_id` int(11) NOT NULL, `category_id` int(11) DEFAULT NULL, `click_count` int(11) DEFAULT NULL, `order_count` int(11) DEFAULT NULL, `pay_count` int(11) DEFAULT NULL, PRIMARY KEY (`task_id`) )
- top10_category_session 存儲top10品類的點擊top10session
CREATE TABLE `top10_category_session`( `task_id` int(11) NOT NULL, `category_id` int(11) DEFAULT NULL, `click_count` int(11) DEFAULT NULL, `session_id` varchar(255) DEFAULT NULL, PRIMARY KEY (`task_id`) )
- session_detail 存儲隨機抽取出來的session的明細數據,top10品類的session明細數據
CREATE TABLE `session_detail`( `task_id` int(11) NOT NULL, `user_id` int(11) DEFAULT NULL, `session_id` varchar(255) DEFAULT NULL, `page_id` int(11) DEFAULT NULL, `page_name` varchar(255) DEFAULT NULL, `action_name` varchar(255) DEFAULT NULL, `search_keywords` varchar(255) DEFAULT NULL, `click_category_id` int(11) DEFAULT NULL, `click_product_id` int(11) DEFAULT NULL, `order_category_ids` varchar(255) DEFAULT NULL, `order_product_ids` varchar(255) DEFAULT NULL, `pay_category_ids` varchar(255) DEFAULT NULL, `pay_product_ids` varchar(255) DEFAULT NULL, PRIMARY KEY (`task_id`) )