spark用戶訪問session分析

基礎數據結構

  • user_visit_action 點擊流數據 (hive表)

    1mysql

    2linux

    3sql

    4shell

    5json

    6session

    7數據結構

    8架構

    9dom

    10網站

    11

    12

    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表)

    1

    2

    3

    4

    5

    6

    user_id //用戶的惟一標識

    username //用戶的登陸名

    name //用戶名

    age //年齡

    professinal //職業

    city //城市

  • task表(mysql表)

    1

    2

    3

    4

    5

    6

    7

    8

    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聚合統計的結果

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    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

    1

    2

    3

    4

    5

    6

    7

    8

    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  存儲按點擊,下單,支付的品類數據

    1

    2

    3

    4

    5

    6

    7

    8

    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

    1

    2

    3

    4

    5

    6

    7

    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明細數據

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    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`)

    )

相關文章
相關標籤/搜索