大数据分析平台-项目3

该项目旨在分析用户访问的起始和结束时间,通过计算步长来确定用户时间占比,并结合性别、年龄和时长进行筛选。数据首先从数据库或日志中获取,经过转化和计算后保存。用户操作转化为格式化的session数据,进一步统计处理,计算时间比例并存储到多种格式(如数据库、redis、Hive、HBase),最后用Echarts展示结果。
摘要由CSDN通过智能技术生成

项目功能流程

​ 需求:获得用户访问初始时间和结束时间 通多计算步长来计算用户所占时间比 加入条件性别 年龄时长进行筛选

​ 当用户访问后会有session存在数据库或者存在日志中

​ 转化所有数据>计算>保存

用户操作,放在一起 转化格式 session对应所有数据 value(Array)
统计每一个用户的Array 再遍历处理
计算 步长 时长 转换为范围 便于统计 >计算百分比 >永久性存储数据库
(存储多种格式 比如数据库 redis Hive hBase) >Echarts展示数据

创建工具类Constant

object Constant {
  val TIME_1S_3S ="1s_3s"
  val TIME_4S_6S ="4s_6s"
  val TIME_7S_9S ="7s_9s"
  val TIME_10S_30S ="10s_30s"
  val TIME_30S_60S ="30s_60s"
  val TIME_1M_10M ="1m_10m"
  val TIME_10M_30M ="10m_30m"
  val TIME_30M = "30m+"

  val STEP_1_3 ="1_3"
  val STEP_4_6 ="4_6"
  val STEP_7_9 ="7_9"
  val STEP_10_30 ="10_30"
  val STEP_30_60 ="30_60"
  val STEP_60 ="60+"

  val SESSION_COUNT = "session_count"
}

创建UserSeesion Object启动类

package com.obj.session

import com.dou.model.{SessionAggrStat, UserInfo, UserVisitAction}
import com.dou.util.{DateUtils, NumberUtils}
import org.apache.spark.sql.{SaveMode, SparkSession}
import java.util.{Date, UUID}

import com.alibaba.fastjson.JSON




object UserSession {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .master("local")
      .appName("session")
      .enableHiveSupport()    //开启内置hive
      .getOrCreate()


    //生产环境下,参数需要从外部传入
    //设定条件,计算数据,最后得到结果,然后使用es展示在后台管理系统
    //和当前项目结合使用
    /*
    页面埋点记录数据
    发送后台记录日志
    spark解析日志,计算,存入数据库
    后台展示数据
    * */

    //可以根据用户性别 年龄 职业。。计算session
    val startTimeParam = "2020-08-20 19:34:20"
    val endTimeParam = "2020-08-20 19:40:20"
    //定义json类型参数
    val json = "{starTimeParam:'2020-08-20 19:34:20'," +
      "endTimeParam:'2020-08-20 19:40:20'," +
      "age:'1-10'," +
      "city:'null'," +
      "sex:'null'}"
    val param = JSON.parseObject(json)

    import spark.implicits._//隐式转换
    //hive中读取这张表
    val userVisitRDD = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值