当前位置: 首页 > news >正文

佛山企业网站建设策划新闻源软文发布平台

佛山企业网站建设策划,新闻源软文发布平台,如何做视频网站技术,关于手机电子商务网站建设需求说明 页面单跳转化率 计算页面单跳转化率,什么是页面单跳转换率,比如一个用户在一次 Session 过程中访问的页面路径 3,5,7,9,10,21,那么页面 3 跳到页面 5 叫一次单跳,7-9 也叫一次单跳, 那么单跳转化率就是要统计…

需求说明

页面单跳转化率

        计算页面单跳转化率,什么是页面单跳转换率,比如一个用户在一次 Session 过程中访问的页面路径 3,5,7,9,10,21,那么页面 3 跳到页面 5 叫一次单跳,7-9 也叫一次单跳, 那么单跳转化率就是要统计页面点击的概率。 比如:计算 3-5 的单跳转化率,先获取符合条件的 Session 对于页面 3 的访问次数(PV) 为 A,然后获取符合条件的 Session 中访问了页面 3 又紧接着访问了页面 5 的次数为 B, 那么 B/A 就是 3-5 的页面单跳转化率。

 功能实现

        数据准备:

 // TODO : Top10热门品类val sparkConf = new SparkConf().setMaster("local").setAppName("HotCategoryTop10Analysis")val sc = new SparkContext(sparkConf)val actionRDD = sc.textFile("data/user_visit_action.txt")

        data/user_visit_action.txt :

         定义一个用户访问动作类:

case class UserVisitAction(date: String,//用户点击行为的日期user_id: Long,//用户的 IDsession_id: String,//session 的 IDpage_id: Long,//某个页面的 IDaction_time: String,//动作的时间点search_keyword: String,//用户搜索的关键词click_category_id: Long,//某一个商品品类的 IDclick_product_id: Long,//某一个商品的 IDorder_category_ids: String,//一次订单中所有品类的 ID 集合order_product_ids: String,//一次订单中所有商品的 ID 集合pay_category_ids: String,//一次支付中所有品类的 ID 集合pay_product_ids: String,//一次支付中所有商品的 ID 集合city_id: Long //城市 id)

        然后将每行数据封装成UserVisitAction对象,运用map转换算子:

val actionDateRDD = actionRDD.map( //每行数据封装成UserVisitAction对象action => {val datas = action.split("_")UserVisitAction(datas(0),datas(1).toLong,datas(2),datas(3).toLong,datas(4),datas(5),datas(6).toLong,datas(7).toLong,datas(8),datas(9),datas(10),datas(11),datas(12).toLong)})

        由于统计所有的页面跳转数据量过于庞大,这里就指定一下:

//TODO 对指定页面连续跳转进行统计//1-2,2-3,3-4,4-5,5-6,6-7val ids = List[Long](1, 2, 3, 4, 5, 6, 7)val okflowIds = ids.zip(ids.tail) //List((1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7))

        接下来统计每个页面的被查看的次数,也就是分母,actionDateRDD里面封装的是一个个UserVisitAction对象,运用filter转换算子过滤出List所包含的页面,再用map转换算子将一个UserVisitAction对象转换成(action.page_id, 1L),便于后续的reduceByKey作统计,而toMap方法是将RDD中的数据转换为一个Map对象,需要将所有的数据收集到Driver端,并在Driver端构建Map对象。因此,需要使用collect方法将RDD中的数据拉取到Driver端的内存中,以便在Driver端进行toMap操作。

//TODO 计算分母(计算每个页面的被查看的次数)val pageidToCountMap = actionDateRDD.filter( //过滤出List里面的页面action => {ids.contains(action.page_id)}).map(action => {(action.page_id, 1L)}).reduceByKey(_ + _).collect().toMapprintln("pageidToCountMap: ")pageidToCountMap.foreach(println)

        接下来统计分子,首先根据session_Id进行分组:

val sessionRDD = actionDateRDD.groupBy(_.session_id)

        再将UserVisitAction对象根据访问时间action_time排序,然后用map算子只保留对象的page_id,再用zip拉链:

 val mvRDD = sessionRDD.mapValues(iter => {val sortList = iter.toList.sortBy(_.action_time)val flowIds = sortList.map(_.page_id)val pageflowIds = flowIds.zip(flowIds.tail)

将不满足条件的页面跳转进行过滤:

val mvRDD = sessionRDD.mapValues(iter => {val sortList = iter.toList.sortBy(_.action_time)val flowIds = sortList.map(_.page_id)val pageflowIds = flowIds.zip(flowIds.tail)//将不合法的页面跳转进行过滤pageflowIds.filter(t=>{okflowIds.contains(t)}).map(t => {(t, 1)})})

 mvRDD大致格式长这样:

        sessionid对于我们来说没有用,只需计算后面的页面跳转内容即可,用map算子处理,再用flatmap扁平化处理,便于后续的reduceByKey聚合:

 //((1,2),1)val flatRDD = mvRDD.map(_._2).flatMap(list => list)//((1,2),sum)val dataRDD = flatRDD.reduceByKey(_ + _)

最终计算:

//计算单跳转换率 分子/分母dataRDD.foreach{case ((page1,page2),sum)=>{val cnt = pageidToCountMap.getOrElse(page1, 0L)println(s"页面${page1}到页面${page2}单跳转换率为: "+(sum.toDouble/cnt))}}

http://www.tj-hxxt.cn/news/343.html

相关文章:

  • 网站营销外包哪家专业扶贫832网络销售平台
  • 学网站建设前途大数据精准获客软件
  • 如何自己做网站腾讯龙网网络推广软件
  • 丹东疫情最新情况seo工具包
  • 什么网站做ppt好怎么投放网络广告
  • 做吗查网站的流量百度关键词排名技术
  • 专做外贸衣服鞋网站有哪些宁波网站推广
  • 有个别网站打开特别慢搜狐三季度营收多少
  • logo设计一键生成seo推广的方法
  • 安徽做网站公司哪家好网站优化排名易下拉软件
  • 公司网站抬头用什么软件做长沙网络推广
  • 帝国cms建站教程google store
  • 佛山新网站建设详细内容市场监督管理局投诉电话
  • 免费提供ppt模板的网站怎么知道网站有没有被收录
  • 做网站余姚北京网站建设公司哪家好
  • 福建省建设继续教育网站推广神器app
  • 模板网站不利于seo吗浅谈一下网络营销的几个误区
  • wordpress css 使用方法谷歌seo推广招聘
  • 个人企业邮箱怎么申请网络优化工程师需要学什么
  • 建站行业成为买方市场腾讯广告投放平台
  • 智慧团建官网登录口入口昆明排名优化
  • 张掖市作风建设年活动网站西安网络科技公司排名
  • 做网站的域名多少钱百度站长工具怎么关闭教程视频
  • 成都网站建设潮州百度账号查询
  • 安庆公司做网站seo免费优化网址软件
  • 免费网站源码大全下载网络推广员的工作内容
  • 当今做那些网站能致富东莞百度seo推广公司
  • 网站开发需要大学吗新浪新闻疫情
  • 两支队伍建设专题网站郑州百度公司地址
  • 开通网站必须做域名空间站长之家seo一点询