Spark案例练习UV的统计.docx
- 文档编号:27176444
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:5
- 大小:393.95KB
Spark案例练习UV的统计.docx
《Spark案例练习UV的统计.docx》由会员分享,可在线阅读,更多相关《Spark案例练习UV的统计.docx(5页珍藏版)》请在冰豆网上搜索。
Spark案例练习UV的统计
Spark案例练习-UV的统计
承接上一篇文档《Spark案例练习-PV的统计》
参数说明:
继续上面的PV代码编写即可
思路:
UV的计算
1.数据进行过滤清洗,获取两个字段(时间、guid)
2.guid非空,时间非空,时间字符串的长度必须大于10
3.将同一天的数据放在一起,根据guid去重,统计去重的结果
代码:
valrdd2=rdd.map(line=>line.split("\t"))
.filter(arr=>{
//保留正常数据
arr.length>=3&&arr
(2).trim.nonEmpty&&arr(0).trim.length>10
})
.map(arr=>{
valdate=arr(0).trim.substring(0,10)
valguid=arr
(2).trim
(date,guid)//(date,url)
})
继续编写代码
有两种方式:
1.基于groupByKey进行UV的统计
2.基于reduceByKey实现UV的统计
先看基于groupByKey进行UV的统计
valuvRdd=rdd2.groupByKey()
.map(t=>{
valdate=t._1
valguids=t._2
valuv=guids.toSet.size
(date,uv)
})
println("uv------------------"+uvRdd.collect().mkString(";"))
再看基于reduceByKey实现UV的统计
rdd2.map(t=>{
((t._1,t._2),1)
})
.reduceByKey(_+_)
.map(_._1)
valuvRDD:
RDD[(String,Int)]=rdd2.distinct()
.map(t=>(t._1,1))
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spark 案例 练习 UV 统计