• 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`)
      )
      
  • 相关阅读:
    转载:CODE CSDN Git 配制方法介绍
    版本管理之Git(二):Win7上Git安装及简单配置过程
    Html_color code表示
    Android 自动化测试—robotium(十一) robotium实现微博绑定
    转载:Android自动化测试- 自动获取短信验证码
    Android 自动化测试—robotium(九) Junit_report测试报告重定向输出到终端SDCard
    每日一问:面试结束时面试官问"你有什么问题需要问我呢",该如何回答?
    常见的几个Python面试题
    使用python解析Json字符串-获取Json字符串关键字
    Android测试之 APK重签名方法
  • 原文地址:https://www.cnblogs.com/zhangweilun/p/6659762.html
Copyright © 2020-2023  润新知