Spark案例练习-PV的统计
关注公众号:分享电脑学习
回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)
云盘目录说明:
tools目录是安装包
res 目录是每一个课件对应的代码和资源等
doc 目录是一些第三方的文档工具
承接上一篇文档《Spark应用的结构》
参数说明:
创建一个Maven项目
Pom文件引入jar,配置信息已经完成,大家可以直接去网盘下载,版本号根据自己的安装情况调整
部分示例
创建一个scala文件,编写代码
1. 构建SparkContext上下文对象
val conf = new SparkConf()
val sc = new SparkContext(conf)
此时可以运行这两行代码
会出现错误
需要添加一行代码
setMaster("local")// 指定应用在哪儿执行,可以是local、或者stadnalone、yarn、mesos集群
再运行一次
又报一次错,这个是要求指定应用的名字
添加代码
.setAppName("pvtest") //指定应用的名字
再运行就可以了(启动hadoop)
2. 基于sc构建RDD
端口为core-site.xml中配置的
将文件上传到指定目录
val path = "hdfs://ip:8020/data/page_views.data" //HDFS的schema 给定数据的路径
val rdd: RDD[String] = sc.textFile(path)
println("总共有" + rdd.count()+ "条数据")
运行可以看到显示
如果不想写schema的话,需要将hadoop的两个文件拷贝到项目的src/main/resources中
两个文件是hadoop的:hdfs-site.xml和core-site.xml
编写代码
val path = /data/page_views.data
运行也可以查看到结果
3. 业务实现
思路:
(1)分析可知道:数据分为7个字段,业务需要三个字段(时间,URL,guid),计算某一个时间的PV的值
(2)数据进行过滤清洗,获取两个字段(时间、url)
(3)url非空,时间非空,时间字符串的长度必须大于10
(4)sql: select date, count(url) from page_view group by date;
(5)sql: select date, count(1) from page_view group by date;
(6)分别用reduceByKey和groupByKey进行数据处理
我们一步步来
先分割数据
val rdd1 = rdd.map(line => line.split("\t"))
数据进行过滤清洗,获取两个字段(时间、url)
url非空,时间非空,时间字符串的长度必须大于10
.filter(arr => {
//保留正常数据
arr.length >2 && arr(1).trim.nonEmpty && arr(0).trim.length > 10
})
截取数据
.map(arr => {
val date = arr(0).trim.substring(0,10)
val url = arr(1).trim
(date,1) // (date,url)
})
基于reduceByKey做统计pv
val pvRdd = rdd1.reduceByKey(_+_)
println("pv------------------" + pvRdd.collect().mkString(";"))
数据表示2013年5月19日一共有100000条访问数据
也可以基于groupByKey实现pv统计(这个可以试一下,如果不行就使用reduceByKey)
groupByKey相当于把相同的key的value放到迭代器里面,也就是这些value都放到内存里面,如果value值数据量撑爆内存,就会OOM异常
val pvRdd = rdd1.groupByKey()
.map(t => {
val date = t._1
val pv = t._2.size
(date,pv)
})
println("pv------------------" + pvRdd.collect().mkString(";"))
与上面值相同
Spark案例练习-PV的统计的更多相关文章
- Spark案例练习-UV的统计
关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...
- Spark案例练习-打包提交
关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...
- Kafka与Spark案例实践
1.概述 Kafka系统的灵活多变,让它拥有丰富的拓展性,可以与第三方套件很方便的对接.例如,实时计算引擎Spark.接下来通过一个完整案例,运用Kafka和Spark来合理完成. 2.内容 2.1 ...
- Django訪问量和页面PV数统计
http://blog.csdn.net/pipisorry/article/details/47396311 以下是在模板中做一个简单的页面PV数统计.model阅读量统计.用户訪问量统计的方法 简 ...
- Spark学习笔记1——第一个Spark程序:单词数统计
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...
- 【Spark-core学习之九】 Spark案例
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- spark 应用场景2-身高统计
原文引自:http://blog.csdn.net/fengzhimohan/article/details/78564610 a. 案例描述 本案例假设我们需要对某个省的人口 (10万) 性别还有身 ...
- [spark案例学习] WEB日志分析
数据准备 数据下载:美国宇航局肯尼迪航天中心WEB日志 我们先来看看数据:首先将日志加载到RDD,并显示出前20行(默认). import sys import os log_file_path =' ...
- 网站每日PV/IP统计/总带宽/URL统计脚本分享(依据网站访问日志)
在平时的运维工作中,我们运维人员需要清楚自己网站每天的总访问量.总带宽.ip统计和url统计等.虽然网站已经在服务商那里做了CDN加速,所以网站流量压力都在前方CDN层了像每日PV,带宽,ip统计等数 ...
随机推荐
- 一行配置搞定 Spring Boot项目的 log4j2 核弹漏洞!
相信昨天,很多小伙伴都因为Log4j2的史诗级漏洞忙翻了吧? 看到群里还有小伙伴说公司里还特别建了800+人的群在处理... 好在很快就有了缓解措施和解决方案.同时,log4j2官方也是速度影响发布了 ...
- [笔记] Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting
原文地址:https://arxiv.org/abs/2012.07436 源码地址:https://github.com/zhouhaoyi/Informer2020
- Gitlab更改项目间的fork提交关系
目录 一.前情提要 二.实际操作 一.前情提要 1.dzsw/cgd_xx项目,通过fork按钮在dzsw_dev组下面同步了一个项目 2.但是现在dzsw/cgd_xx项目因为没法提交合并请求,一点 ...
- python基础 (三)
成员运算 判断某个个体在不在某个群体里,关键词:in(在),not in(不在)例如: 特殊的,如果是字典中,因为字典的V值是隐藏的,能查看的只有V,所以无法判断V值,只能判断K值. 身份运算 用于判 ...
- php常用的数组排序函数
sort() 函数用于对数组单元从低到高进行排序.rsort() 函数用于对数组单元从高到低进行排序.asort() 函数用于对数组单元从低到高进行排序并保持索引关系.arsort() 函数用于对数组 ...
- png crc讲解
我太难了. 我真的是为你们着想,你们学姐说misc太简单了,可就是这么简单我相信你们也不会做...我还得给你们讲解... 加油吧!!! 工具:010editor 这个我想给你放下载链接来着,后来 ...
- Linux 三剑客之grep
目录 Linux 三剑客之grep 搭配命令-find 三剑客之grep: 正则表达式: Linux 三剑客之grep 搭配命令-find find命令是根据文件的名称或者属性查找文件,并不会显示文件 ...
- LuoguB2133 我家的门牌号 题解
Update \(\texttt{2021.11.27}\) 修复了代码中的 \(10000\) 写成 \(n\) 的错误. Content 一个家庭住在一个胡同里面,门牌号从 \(1\) 开始编号. ...
- 『学了就忘』Linux日志管理 — 90、Linux中日志介绍
目录 1.日志相关服务 2.系统中常见的日志文件 1.日志相关服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.RedHat认为syslogd已经不能满足在工 ...
- 10-2 bonding
创建bonding设备的配置文件 centos8 /etc/sysconfig/network-scripts/ifcfg-bond0 NAME=bond0 TYPE=bond DEVICE=bond ...