生活在于积累,你所遇到的困难,问题,,,,都将成为你生活的财富,而博客,就是记录你一路成长的最好见证。
————————送给正在写作业的你
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相关推荐

  1. Spark的实战题目——寻找5亿次访问中,访问次数最多的人

    场景描述:这是一个Spark的实战题目,也是在面试中经常出现的一类题目. 问题描述 对于一个大型网站,用户访问量尝尝高达数十亿.对于数十亿是一个什么样的概念,我们这里可以简单的计算一下.对于一个用户, ...

  2. 从1亿个ip中找出访问次数最多的IP

    看了教你如何迅速秒杀掉:99%的海量数据处理面试题一文,的确是挺有收获的,特别是对这种海量数据的处理,的确是有了一个挺清晰的思路,特别感谢原文博主July. 处理海量数据问题存在的原因就在于1)数据量 ...

  3. 关于某日访问次数最多的IP的topK问题的三种解法

    题目描述 在july大神的博客中,看到这样两道题: 1. 海量日志数据,提取出某日访问百度次数最多的那个IP. 2. 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复 ...

  4. SHELL 分析 列出当天访问次数最多的IP

    SHELL 分析日志 作者:lvtao发布于:2013-7-3 14:58 Wednesday 分类:工具源码 列出当天访问次数最多的IP 命令:cut -d- -f 1 /usr/local/apa ...

  5. shell最大出现和连续出现次数_shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)...

    当服务器压力比较大,跑起来很费力时候.我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时. 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的. 下面是我在 ...

  6. shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)

    当服务器压力比较大,跑起来很费力时候.我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时. 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的. 下面是我在 ...

  7. 统计Apache或nginx日志里访问次数最多的前十个IP

    来源:http://www.07net01.com/2015/08/914079.html nginx awk '{print $1}' urlogfile | sort | uniq -c | so ...

  8. linux 统计日志最多的ip,统计nginx日志里访问次数最多的前十个IP

    Jenkins配置自动发送邮件,成功! Jenkins自动发送邮件配置: 打开"系统管理"--"系统设置" 在"Jenkins Location&qu ...

  9. 统计nginx日志里访问次数最多的前十个IP

    awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10 转载于:https:// ...

最新文章

  1. 常用实验资源共享整理 20111026
  2. Linux--文件结构体struct file
  3. c语言错误解析-变量声明
  4. jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()
  5. RecyclerView(四)设置分割线样式(Android 5.0 新特性)
  6. java url类下载_Java根据url下载图片或文件的工具类-Fun言
  7. linux怎么卸载软件 apt,linux安装和卸载软件:sudo apt-get install(remove)
  8. FireFox、chrome通过插件使用IE内核,IE Tab v2
  9. Android 关于佳博和汉印蓝牙热敏打印机开发,安卓databinding
  10. 朴素贝叶斯——R语言
  11. 字节跳动资深面试官亲述:面试应该注意哪些问题?
  12. 2022建筑架子工(建筑特殊工种)操作证考试题库及在线模拟考试
  13. 二维空间的抛物型偏微分方程基本解法——ADI与紧ADI方法
  14. python 拓扑排序 dfs bfs_图遍历算法之DFS/BFS
  15. Focal loss 和 GHM
  16. 多种开关电源MOS管驱动电路详细解析
  17. [4G5G专题-92]:流程 - 4G LTE 终端在RRC IDLE空闲状态下的小区选择与小区重选
  18. 十分钟带你了解阿里、美团、滴滴、头条等互联网头部大厂面经
  19. 「新世相」都写过什么题材?如何通过数据挖掘写作题材
  20. C语言结构体工资缴税,C语言进阶-第11~13讲:结构体实践(成绩处理个税计算器之码数分离)...

热门文章

  1. 【bug】掘金md文本解析器bug
  2. js 函数节流和防抖
  3. Lua 之table的测试
  4. shell命令行快捷键
  5. noi 7627 鸡蛋的硬度
  6. lisp 设计盘形齿轮铣刀_齿轮是怎么来的——图解6种齿轮加工工艺
  7. python 系统策略禁止这个安装_电脑无法安装软件提示设置了系统策略禁止此项安装怎么办?...
  8. VMware OVF 协议
  9. appim自动化--点击指定控件的指定位置
  10. java button jbutton_java程序将Button改成JButton,该如何改?