Spark实例项目—每个域名下访问次数最多的URL
生活在于积累,你所遇到的困难,问题,,,,都将成为你生活的财富,而博客,就是记录你一路成长的最好见证。
————————送给正在写作业的你
Spark 项目分析网络URL数据。加深RDD理解
要求分析出每个域名的前三个访问量是哪些 URL
数据的格式:
https://blog.csdn.net/qq_43688472/article/details/84307884 [2015-07-07 13:52:58] 54
https://item.jd.com/26838388932.html [2008-03-04 15:47:37] 81
https://blog.csdn.net/qq_24073707/article/details/80665991 [5002-10-17 09:20:02] 73
https://hizero.taobao.com/?spm=a217m.8316598.682372.3.426d33d5KRgTIh [2009-05-29 20:02:43] 63
操作:
import java.net.URLimport org.apache.spark.{SparkConf, SparkContext}object UrlCount01 {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setMaster("local[2]").setAppName("UrlCount01")val sc = new SparkContext(sparkConf)val line = sc.textFile("file:///E:\\data.txt" )//筛选数据因为有的数据可能不散URL格式的数据//println("line: "+line)// val rdd1 = line.filter(x=>{// val tmp = x.split(":")// if (tmp.length>=3||x.contains("[["))// false// else// true// }).map(// x=>{// val data = x.split("\t")// val urls = new URL(data(0))// val host = urls.getHost// (data(0), 1)// })val rdd1 = line.map(x=>{val data = x.split("\t")val urls = new URL(data(0))val host = urls.getHost(data(0), 1)})val rdd2 = rdd1.reduceByKey((x,y)=>x+y)//合并两个Map集合对象(将两个对应KEY的值累加)//( map1 /: map2 ) { case (map, (k,v)) => map + ( k -> (v + map.getOrElse(k, 0)) ) }val rdd3 = rdd2.map{case(d,t)=>{val urls = new URL(d)val host = urls.getHost(host,d, t)}}//把数据进行分组val rdd4 = rdd3.groupBy(_._1)//分组后进行排序操作val rdd5 = rdd4.map(sx=>{val key = sx._1val value = sx._2;val sorval = value.toList.sortBy(_._3).take(3)(key,sorval)})rdd5.foreach(println)//把操作完的数据存入本地文件//rdd5.saveAsTextFile("E:\\data2")sc.stop()}}
其中已经表明一些注释了,需要什么就打开什么吧,
让我们看一下结果:
(wengna.taobao.com,List((wengna.taobao.com,https://wengna.taobao.com/?spm=a217m.8316598.682375.7.426d33d5KRgTIh,2)))
(takefired.taobao.com,List((takefired.taobao.com,https://takefired.taobao.com/?spm=a217m.8316598.711275.5.426d33d5KRgTIh,1)))
(blog.csdn.net,List((blog.csdn.net,https://blog.csdn.net/qq_43688472/article/details/84940873,1), (blog.csdn.net,https://blog.csdn.net/qq_24073707/article/details/80988329,1), (blog.csdn.net,https://blog.csdn.net/qq_24073707/article/details/80658301,1)))
(12cmlook.taobao.com,List((12cmlook.taobao.com,https://12cmlook.taobao.com/?spm=a217m.8316598.682375.9.426d33d5KRgTIh,1)))
(item.jd.com,List((item.jd.com,https://item.jd.com/25619900612.html,1), (item.jd.com,https://item.jd.com/19997245287.html,1), (item.jd.com,https://item.jd.com/100001625726.html,1)))
(unawares.taobao.com,List((unawares.taobao.com,https://unawares.taobao.com/?spm=a217m.8316598.682348.7.426d33d5KRgTIh,2)))
(mp.csdn.net,List((mp.csdn.net,https://mp.csdn.net/mdeditor/84307884#,1)))
付出总会有回报,相信自己,即使你很慢,只要你在前进就好额,不要害怕,加油!
——————————————送给努力的你
Spark实例项目—每个域名下访问次数最多的URL相关推荐
- Spark的实战题目——寻找5亿次访问中,访问次数最多的人
场景描述:这是一个Spark的实战题目,也是在面试中经常出现的一类题目. 问题描述 对于一个大型网站,用户访问量尝尝高达数十亿.对于数十亿是一个什么样的概念,我们这里可以简单的计算一下.对于一个用户, ...
- 从1亿个ip中找出访问次数最多的IP
看了教你如何迅速秒杀掉:99%的海量数据处理面试题一文,的确是挺有收获的,特别是对这种海量数据的处理,的确是有了一个挺清晰的思路,特别感谢原文博主July. 处理海量数据问题存在的原因就在于1)数据量 ...
- 关于某日访问次数最多的IP的topK问题的三种解法
题目描述 在july大神的博客中,看到这样两道题: 1. 海量日志数据,提取出某日访问百度次数最多的那个IP. 2. 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复 ...
- SHELL 分析 列出当天访问次数最多的IP
SHELL 分析日志 作者:lvtao发布于:2013-7-3 14:58 Wednesday 分类:工具源码 列出当天访问次数最多的IP 命令:cut -d- -f 1 /usr/local/apa ...
- shell最大出现和连续出现次数_shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)...
当服务器压力比较大,跑起来很费力时候.我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时. 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的. 下面是我在 ...
- shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)
当服务器压力比较大,跑起来很费力时候.我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时. 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的. 下面是我在 ...
- 统计Apache或nginx日志里访问次数最多的前十个IP
来源:http://www.07net01.com/2015/08/914079.html nginx awk '{print $1}' urlogfile | sort | uniq -c | so ...
- linux 统计日志最多的ip,统计nginx日志里访问次数最多的前十个IP
Jenkins配置自动发送邮件,成功! Jenkins自动发送邮件配置: 打开"系统管理"--"系统设置" 在"Jenkins Location&qu ...
- 统计nginx日志里访问次数最多的前十个IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10 转载于:https:// ...
最新文章
- 常用实验资源共享整理 20111026
- Linux--文件结构体struct file
- c语言错误解析-变量声明
- jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()
- RecyclerView(四)设置分割线样式(Android 5.0 新特性)
- java url类下载_Java根据url下载图片或文件的工具类-Fun言
- linux怎么卸载软件 apt,linux安装和卸载软件:sudo apt-get install(remove)
- FireFox、chrome通过插件使用IE内核,IE Tab v2
- Android 关于佳博和汉印蓝牙热敏打印机开发,安卓databinding
- 朴素贝叶斯——R语言
- 字节跳动资深面试官亲述:面试应该注意哪些问题?
- 2022建筑架子工(建筑特殊工种)操作证考试题库及在线模拟考试
- 二维空间的抛物型偏微分方程基本解法——ADI与紧ADI方法
- python 拓扑排序 dfs bfs_图遍历算法之DFS/BFS
- Focal loss 和 GHM
- 多种开关电源MOS管驱动电路详细解析
- [4G5G专题-92]:流程 - 4G LTE 终端在RRC IDLE空闲状态下的小区选择与小区重选
- 十分钟带你了解阿里、美团、滴滴、头条等互联网头部大厂面经
- 「新世相」都写过什么题材?如何通过数据挖掘写作题材
- C语言结构体工资缴税,C语言进阶-第11~13讲:结构体实践(成绩处理个税计算器之码数分离)...