注意的点:为什么这么写?能不能加些其它的列操作?
数据!
什么样的数据!!
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时间