注意的点:为什么这么写?能不能加些其它的列操作? 数据! 什么样的数据!!
object模块下创建object-main模块 创建UserSession Object类
思路:
session的步长和时间 我从首页进入到商品详情到购物车 用户到底跳转了多少页面就是步长 当这个数据统计之后 这个用户在网页中时间段内浏览的次数 通过这种方式找出优质客户和访问时间 比如9点开始访问到10点 之间耗费多长时间
package com.obj.session import com.dou.model.UserVisitAction import org.apache.spark.sql.SparkSession object UserSession { def main(args: Array[String]): Unit = { val spark = SparkSession.builder() .master("local") .appName("session") .enableHiveSupport() //开启内置hive .getOrCreate() import spark.implicits._//隐式转换 val userVisitRDD = spark.sql("select * from user_visit_action") .as[UserVisitAction].rdd//转换模板类或许数据 会变成一个对象 用的话直接对象. val sessionUserVisit = userVisitRDD .map{case(userVisit) => (userVisit.session_id,userVisit)} val session2UserVisit = sessionUserVisit.groupByKey() val result = session2UserVisit.map{ case (sessionId,userInfos) => { //步长 var step = 0 userInfos.foreach( userInfos => { //TODO计算时间 step += 1 } ) (sessionId,step) } } result.take(10).foreach(println(_)) } }1.session的步长和时间
好处:用户获得用户访问习惯 作为营销效果的体验 作为检测 用于挖掘会员 比如网站100个用户 大量用户访问时间长 但不是会员 说明喜欢APP,但是为什么不作为会员,通过计算数据进行针对客户的运营操作
怎么做: 1、根据用户sessionid进行聚合操作 2、计算聚合后的数量 =》 步长 3、计算聚合后的时间差 =》session时间