spark实战之网站日志分析

news/2024/5/14 22:02:29/文章来源:https://blog.csdn.net/weixin_30670965/article/details/98143945

  前面一篇应该算是比较详细的介绍了spark的基础知识,在了解了一些spark的知识之后相必大家对spark应该不算陌生了吧!如果你之前写过MapReduce,现在对spark也很熟悉的话我想你再也不想用MapReduce去写一个应用程序了,不是说MapReduce有多繁琐(相对而言),还有运行的效率等问题。而且用spark写出来的程序比较优雅,这里我指的是scala版的,如果你用java版的spark去写一个应用程序,对比scala版的,想必你肯定会爱上scala这门语言的,哈哈哈(以上纯属个人观点,具体场景具体对待)

实现目标1:根据采集的日志信息,统计总的pv量 。

需求分析:在大数据领域,采集数据的常采用的手段就是怼网站进行埋点然后根据需求收集相关的数据,这里我们用的是最基本的日志信息来做处理,数据来源于某网站,可以分享出来给大家使用,完了后我会将代码还有数据 文件放到GitHub上供大家下载。首先我们来看看日志文件(access.log)的格式:

这是标准的一条日志信息,当然我们如果是统计网站的pv总量的话不需要考虑对日志进行清洗的工作。以下是pv统计的代码:

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}//todo:利用Spark程序统计运营商pv总量
object PV extends App{//创建sparkConf对象private val sparkConf: SparkConf = new SparkConf().setAppName("PV").setMaster("local[2]")//创建SparkContext对象private val sc: SparkContext = new SparkContext(sparkConf)//设置输出的日志级别sc.setLogLevel("WARN")//读取日志数据private val dataRDD: RDD[String] = sc.textFile("E:\\access.log")//统计pv总量====方式一:计算有多少行及pv总量private val finalResult1: Long = dataRDD.count()println(finalResult1)//方式二:每一条日志信息记为一条数据1private val pvOne: RDD[(String, Int)] = dataRDD.map(x=>("PV",1))//对pv根据key进行累加private val resultPV: RDD[(String, Int)] = pvOne.reduceByKey(_+_)//打印pv总量resultPV.foreach(x=>println(x))//关闭资源
  sc.stop()
}

结果如下:

 

实现目标2:根据采集的日志信息,统计总的uv量 。

需求分析:目标数据文件还是access.log,比较简单,直接看代码:

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD//todo:利用spark统计运营商uv总量
object UV extends App{//创建sparkConf对象private val sparkConf: SparkConf = new SparkConf().setAppName("PV").setMaster("local[2]")//创建SparkContext对象private val sc: SparkContext = new SparkContext(sparkConf)//设置输出的日志级别sc.setLogLevel("WARN")//读取日志数据private val dataRDD: RDD[String] = sc.textFile("E:\\access.log")//切分每一行,获取对应的ip地址private val ips: RDD[String] = dataRDD.map(_.split(" ")(0))//去重private val ipNum: Long = ips.distinct().count()println(ipNum)//g关闭资源
  sc.stop()
}

结果 如下:

 实现目标3:根据采集的日志信息,统计访问最多的前五位网站降序排列 TopN。

 

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD//todo:利用spark计算运营商访问url最多的前n位=====TopN
object TopN extends App{//创建sparkConf对象private val sparkConf: SparkConf = new SparkConf().setAppName("PV").setMaster("local[2]")//创建SparkContext对象private val sc: SparkContext = new SparkContext(sparkConf)//设置输出的日志级别sc.setLogLevel("WARN")//读取日志数据private val dataRDD: RDD[String] = sc.textFile("E:\\access.log")//对每一行的日志信息进行切分并且过滤清洗掉不符合规则的数据//通过对日志信息的分析,我们知道按照空格切分后,下标为10的是url,长度小于10的暂且认为是不符合规则的数据private val urlAndOne: RDD[(String, Int)] = dataRDD.filter(_.split(" ").size>10).map(x=>(x.split(" ")(10),1))//相同url进行累加private val result: RDD[(String, Int)] = urlAndOne.reduceByKey(_+_)//访问最多的url并进行倒叙排序private val sortResult: RDD[(String, Int)] = result.sortBy(_._2,false)//取前五位private val finalResult: Array[(String, Int)] = sortResult.take(5)//打印输出finalResult.foreach(println)sc.stop()
}

运行结果:

 

转载于:https://www.cnblogs.com/likemebee/p/8228407.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_765307.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

seo按天扣费系统_SEO优化:为什么你的网站排名一直做不上去?

SEO优化中关键词优化是一个非常核心的运营策略,现在不管你是做什么电商产品或者做搜索引擎优化,都需要在关键词优化上狠下功夫。因为关键词优化的好,就能最大程度吸引更多的免费精准自然流量,这是所有商家或卖家都希望看到并做到的…

打包文档_如何免费从 0 构建快速文档网站

背景图片使用了John Schnobrich 拍的照片这一篇文章聊一聊如何做一个文档网站,免费并且加载速度较快,是我在做 http://usetable-ahooks.js.org/ 的一些经验,可以多多交流。做文档网站,主要分成四部分来讲,分别是选择文…

pythonのscrapy抓取网站数据

(1)安装Scrapy环境 步骤请参考:https://blog.csdn.net/c406495762/article/details/60156205 需要注意的是,安装的时候需要根据自己的python的版本进行安装。 (2)创建Scrapy项目 通过命令创建: …

搭建前后端分离网站

后台网站基于:VueCli 3.0 ElementUI Asp.Net Core WebApi MongoDB 实现 前端:VueCli 3.0 安装Node.JS,npm 是 JavaScript 世界的包管理工具,并且是 Node.js 平台的默认包管理工具。下载Node.JS 安装 Vue Cli 3.0 npm install -g vue/cli…

HTML吸引人眼球的网页,超吸引眼球的优秀网站设计欣赏

1. Catch Fish And ChipsCatch fish and chips 是一家专卖炸鱼块及薯片的连锁餐厅,网站已分段的影片衔接各页面之间的转换,清晰的画面不仅凸显食材的新鲜、美味的形象,也巧妙的抓住了消费者的注意力,会让人想认真转动滚轮到最下方…

java 网站加入git_使用git提交项目到码云

一、git安装2、找到Git-2.11.exe文件,双击安装3、点击next继续下一步4、更改安装路径,点击next下一步5、勾选Additonai icons,创建桌面图标,不想创建桌面图标可不勾选此项,点击next下一步6、在Adjusting your PATH env…

如何判断一个网站是不是php,怎样查看一个网站是否使用织梦程序做的及其版本...

原标题:怎样查看一个网站是否使用织梦程序做的及其版本对于一个自己看上的好网站,我们总是迫不及待的想知道它是用什么程序做的。然后自己也可以通过仿站、采集等做一个类似的站点。今天分享点如何判断一个网站是否是使用的织梦DedeCMS程序制作的知识&am…

Linux三大主流网站构建平台,第二十三期 Linux的LAMP网站平台构建

在CentOS7系统中开启Web/FTP等网络服务应用时,可能会收到默认配置的防火墙、SELinux等安全防护策略影响。为了避免干扰,学习过程中建议禁止这些保护机制。关闭防火墙策略:[rootsvr7 ~]# systemctl stop firewalld[rootsvr7 ~]# systemctl dis…

不错的anroid源码在线浏览网站【学习笔记】

不错的anroid源码在线浏览网站:http://androidxref.com/ 转载于:https://www.cnblogs.com/zzb-Dream-90Time/p/10643972.html

网站截流项目长期正规可落地操作3天日赚400+

在大多数人的印象里网站赚钱对于小白来说难度较高,而且周期比较长,需要每天更新文章和做SEO坚持几个月下来也未必能带来多大的收益,而很多人在坚持1个月不到就放弃了。 网站截流,顾名思义就是截取别人的流量来操作变现&#xff0…

蜘蛛池对网站收录和排名的促进作用究竟有多大?

很多人都认为使用蜘蛛池可以促进网站的收录和排名,但是,因为大部分人购买蜘蛛池不懂辨别,导致,买了蜘蛛池也没有效果,那么,蜘蛛池对网站收录和排名的促进作用究竟有多大呢? 一、什么是蜘蛛池&am…

为什么SEO越来越难做了?SEO怎么才能做出效果?

SEO越来越难做,这已经成为一种常态,不像以前做SEO可以坐享其成,现在做SEO的难度要比以前大很多,那么,为什么SEO越来越难做了?SEO怎么才能做出效果? 一、竞争激烈 以前SEO好做的时候&#xff0c…

网站关键词的SEO技巧,快速获得百度排名首页

网站SEO优化的核心任务,就是快速获得网站关键词在百度首页的排名,这也是每个网站运营人员的期望所在。然而,由于大多数新手的操作总是事与愿违,无论如何努力,都没有使用正确的SEO技巧把排名做好! 其实&…

做SEO和SEM有什么区别?哪个推广效果会更好?

很多企业在选择营销方式上,存在错误的认知,不知道怎么选择,是免费的SEO还是付费的SEM?究其原因,是不知道SEO和SEM有什么区别,企业做推广用哪种方式,推广效果会更好一些呢? 一、SEO和…

网站文章关键词重复,对于SEO有哪些不良影响?

新手写文章,一般都习惯逮着一个关键词往死里写,各种长尾,但是,在搜索的时候会发现,关键词重复率太高,那么,网站文章关键词重复,对于SEO有哪些不良影响呢? 一、什么是关键…

反链是什么意思?网站反链对于SEO有哪些作用?

大家在做网站SEO的时候,会接触一个词汇,叫做反链,或者是反向链接,而且,在使用站长工具查询的时候,会看到反链数据,那么,反链是什么意思?网站反链对于SEO有哪些作用呢&…

内页收录慢怎么办?网站内页多久能被百度收录?

很多网站上线以后,首页收录在一周内就可以完成,在百度搜索品牌词就会在首页显示,排名比较稳,但是,文章页却很容易一直不被收录,那么,内页收录慢怎么办?网站内页多久能被百度收录呢&a…

SEO行业怎么了?

SEO行业最近很焦虑,打开交流群都是流量排名掉了、网站出问题、SEO还有前景吗诸如此类的话题。我也是焦虑大军的其中一员,以自己狭隘的角度思考的发际线都前移了,总结一些自己对于SEO行业的思考,仅代表个人观点。 一.原创还是不原…

知名在线音乐网站音悦Tai疑似倒闭

知名在线音乐网站音悦Tai疑似倒闭,官网无法正常访问,App数据异常被下架,官方微博账号也改行卖鞋,估计凉了! 音悦台上线于2009年,建站之初凭借:更新快,画质高,韩流正盛,迅…

实战分享:如何通过黑帽SEO快速获取庆余年这类电视剧流量

不少人都唱衰SEO这个行业,实际上大多数都是SEO工薪阶层在谈论这个话题,当然不可否认搜索引擎优化确实没有以前那么火热,但是不代表SEO就没有前途了。我最近做了一个SEO站,主要是用来攻克黑帽操作,目的就是快速做流量。…