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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...