您的位置:首页 > 其它

Spark项目:大型电商日志分析(三)

2019-01-03 20:07 162 查看
版权声明:@GaoShan https://blog.csdn.net/weixin_42969976/article/details/85716773

用户访问session分析

主题:用户访问session分析模块之按条件筛选session功能点

实施步骤:
1. 向Task表中插入一条记录
insert into `task` (`task_id`, `task_name`, `create_time`, `start_time`, `finish_time`, `task_type`, `task_status`, `task_param`) values('1','用户访问session分析',NULL,NULL,NULL,'用户访问session分析任务',NULL,'{\"ages\":[0,100],\"genders\":[\"男\",\"女\"],\"professionals\":[\"教师\", \"工人\", \"记者\", \"演员\", \"厨师\", \"医生\", \"护士\", \"司机\", \"军人\", \"律师\"],\"cities\":[\"南京\", \"无锡\", \"徐州\", \"常州\", \"苏州\", \"南通\", \"连云港\", \"淮安\", \"盐城\", \"扬州\"]}');
2.创建一个实体类Task
3. dao层
ITaskDao  ~> findTaskById(参数taskId),可以通过args传进来
TaskDaoImpl
4.UserAccessSessioAnalysisJob.scala  <~ 具体业务逻辑书写处
String sql = "select * from user_visit_action u, user_info i where u.user_id=i.user_id and i.age between 0 and 100 and xxx "
spark.sql(sqlstr)

①设计一个实体类SearchParam,用于封装筛选的参数
②从SearchParam实例中获取筛选参数值,并据此动态拼接sql语句,根据参数值是否存在就可以判断用户是否录入了值,若存在,作为sql拼接起来如何判断用户录入了职业
      if(professionals != null && professionals.size()>0){
        buffer.append(xxx)
      }
③将筛选出来得结果注册为一张虚拟表,供后续步骤使用-使用缓存提高查询的效率

主题:访问时长在1s3s、4s6s、7s9s、10s30s、30s60s、1m3m、3m10m、10m30m、30m以上各个范围内的session占比;访问步长在13、46、79、1030、30~60、60以上各个范围内的session占比
在符合条件的session中,按照时间比例随机抽取1000个session

在符合条件的session中,获取点击、下单和支付数量排名前10的品类

主题:对于排名前10的品类,分别获取其点击次数排名前10的session

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐