关注公众号:分享电脑学习
回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)

云盘目录说明:

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的统计的更多相关文章

  1. Spark案例练习-UV的统计

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...

  2. Spark案例练习-打包提交

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...

  3. Kafka与Spark案例实践

    1.概述 Kafka系统的灵活多变,让它拥有丰富的拓展性,可以与第三方套件很方便的对接.例如,实时计算引擎Spark.接下来通过一个完整案例,运用Kafka和Spark来合理完成. 2.内容 2.1 ...

  4. Django訪问量和页面PV数统计

    http://blog.csdn.net/pipisorry/article/details/47396311 以下是在模板中做一个简单的页面PV数统计.model阅读量统计.用户訪问量统计的方法 简 ...

  5. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  6. 【Spark-core学习之九】 Spark案例

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  7. spark 应用场景2-身高统计

    原文引自:http://blog.csdn.net/fengzhimohan/article/details/78564610 a. 案例描述 本案例假设我们需要对某个省的人口 (10万) 性别还有身 ...

  8. [spark案例学习] WEB日志分析

    数据准备 数据下载:美国宇航局肯尼迪航天中心WEB日志 我们先来看看数据:首先将日志加载到RDD,并显示出前20行(默认). import sys import os log_file_path =' ...

  9. 网站每日PV/IP统计/总带宽/URL统计脚本分享(依据网站访问日志)

    在平时的运维工作中,我们运维人员需要清楚自己网站每天的总访问量.总带宽.ip统计和url统计等.虽然网站已经在服务商那里做了CDN加速,所以网站流量压力都在前方CDN层了像每日PV,带宽,ip统计等数 ...

随机推荐

  1. 学习 27 门编程语言的长处,提升你的 Python 代码水平

    Python猫注:Python 语言诞生 30 年了,如今的发展势头可谓如火如荼,这很大程度上得益于其易学易用的优秀设计,而不可否认的是,Python 从其它语言中偷师了不少.本文作者是一名资深的核心 ...

  2. 三维引擎导入obj模型不可见总结

    最近有客户试用我们的三维平台,在导入模型的时候,会出现模型全黑和不可见的情况.上一篇文章说了全黑的情况.此文说下不可见的情况. 经过测试,发现可能有如下两种情况. 导入的模型不在镜头视野内 导入的模型 ...

  3. Jenkins安全加固

    1.jenkins未授权访问 描述 jenkins不当配置可导致未授权访问管理控制台,可以通过脚本命令行执行系统命令.通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹shell,w ...

  4. live2d

    原文来自https://www.fghrsh.net/post/123.html Live2D 看板娘 v1.4 / Demo 3 - 内置 waifu-tips.json (博客园等网站引用推荐) ...

  5. LuoguP7041 [NWRRC2016]King's Heir 题解

    Content 给出现在的日期,请从 \(n\) 个人当中选出一个人,使得他是所有成年人(\(\geqslant 18\) 岁的人)中年龄最小的. 数据范围:设日期为 \(yy/mm/dd\),则有 ...

  6. Base64编码原来是这么回事儿

    鸣谢CSDN文章:https://blog.csdn.net/believesoul/article/details/84100616 一.言简意赅理解Base64编码 就是将以"字节&qu ...

  7. summernote富文本的简单使用

    官方地址:https://summernote.org/ html代码 <div class="summernote" id="summernote" & ...

  8. JAVA根据URL生成二维码图片、根据路径生成二维码图片

    引入jar包 zxing-2.3.0.jar.IKAnalyzer2012_u6.jar 下载地址:https://yvioo.lanzous.com/b00nlbp6h                ...

  9. 【LeetCode】326. Power of Three 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 循环 递归 取对数 判断是不是最大3的倍数的因子 日 ...

  10. 【LeetCode】19. Remove Nth Node From End of List 删除链表的倒数第 N 个结点

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:链表, 删除节点,双指针,题解,leetcode, 力扣 ...