zoukankan      html  css  js  c++  java
  • spark用户访问session分析

     基础数据结构

    • 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`)
      )
      
  • 相关阅读:
    【题解】【BT】【Leetcode】Populating Next Right Pointers in Each Node
    【题解】【BT】【Leetcode】Binary Tree Level Order Traversal
    【题解】【BST】【Leetcode】Unique Binary Search Trees
    【题解】【矩阵】【回溯】【Leetcode】Rotate Image
    【题解】【排列组合】【素数】【Leetcode】Unique Paths
    【题解】【矩阵】【回溯】【Leetcode】Unique Paths II
    【题解】【BST】【Leetcode】Validate Binary Search Tree
    【题解】【BST】【Leetcode】Convert Sorted Array to Binary Search Tree
    第 10 章 判断用户是否登录
    第 8 章 动态管理资源结合自定义登录页面
  • 原文地址:https://www.cnblogs.com/zhangweilun/p/6659762.html
Copyright © 2011-2022 走看看