spark用戶訪問session分析

来源:http://www.cnblogs.com/zhangweilun/archive/2017/04/02/6659762.html
-Advertisement-
Play Games

基礎數據結構 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`)
    )
    

     


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 聲明 轉載請註明出處! Reprint please indicate the source! http://www.hiknowledge.top/?p=86&preview=true 什麼是JMS JMS即Java消息服務(Java Message Service)應用程式介面,是一個Java平 ...
  • 在牛客網上做到的一道題,挺簡單基礎的,不過也寫一下,哈哈! 統計一個數字在排序數組中出現的次數: 可定義一個用於統計數字個數的變數count,然後從前往後遍曆數組,看是否與所求數字相等,如果相等,則count++; 下麵貼出代碼: public class Solution { public int ...
  • 這段時間在做項目,發現自己忘得好快呀,幸虧有博客園幫我記著呢,整理博客園簡直不要太重要了哦 因為做的是一個內部管理系統,只用了一個主頁面,所有的都不允許整個網頁刷新,所以我們只能用ajax 來做,當然剛開始做也走了很多的彎路,最終還是做出來了 這點還是比較欣慰的 今天要整理一下ajax實現修改功能 ...
  • 作為一個能安全運行的工具庫,為了保證占用資源的安全性,對異常處理(exception handling)和事後處理(final clean-up)的支持是不可或缺的。FunDA的數據流FDAPipeLine一般是通過讀取資料庫數據形成數據源開始的。為了保證每個數據源都能被安全的使用,FunDA提供了 ...
  • 一、什麼是編碼 編碼是指信息從一種形式或格式轉換為另一種形式或格式的過程。 在電腦中,編碼,簡而言之,就是將人能夠讀懂的信息(通常稱為明文)轉換為電腦能夠讀懂的信息。眾所周知,電腦能夠讀懂的是高低電平,也就是二進位位(0,1組合)。 而解碼,就是指將電腦的能夠讀懂的信息轉換為人能夠讀懂的信息 ...
  • 一、概念 Hibernate是一個開源的對象關係映射(ORM)框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以拋棄在程式中編寫SQL語句,隨心所欲的使用對象編程思維來操縱資料庫。 二、準備工作 在Eclipse中安裝HibernateTools插件:Help -> Install ...
  • 這幾天做了幾道微不足道的數論題,感覺做法都十分的高啊,我這種僵化的思想是很難有那樣的切題知識水平的。然後做了幾道題,感覺也有點熟悉數學的那一套理論了,雖然我還是太弱,但是有點東西還是要講出來的嘛,一起談笑風生,積累人生經驗。悶聲發大財雖然好,但是是不支持的。 上面那句話看不懂就無視吧。 那麼對於數論 ...
  • 查詢單條信息的在 http://www.cnblogs.com/tk55/p/6659285.html 已經有了 XML 修改UserMapper.xml 修改Test.java 結果 註解 UserMapper.java mybatis-config.xml Test.java 結果 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...