Spark 分析Url

Spark 项目分析网络URL数据。加深RDD理解

要求分析出每个域名的前三个访问量是哪些 URL

数据格式
3   http://tinyurl.com/3jcvsm
//初始化SparkCOntext,这里用的是本地模式运行计算,并导入数据源
val conf = new SparkConf().setAppName(this.getClass().getSimpleName().filter(!_.equals('$'))).setMaster("local")
val sc = new SparkContext(conf)
val line = sc.textFile("/home/abc/apps/spark_data/url")
//筛选数据因为有的数据可能不散URL格式的数据
   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(1))
        val host = urls.getHost
        (data(1), 1)

      }
    )
//进行reduce求和
val rdd2 = rdd1.reduceByKey((x,y)=>x+y)
  //操作url 提取出url的host
  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._1
      val value = sx._2;
      val sorval = value.toList.sortBy(_._3).take(3)
      (key,sorval)
    })
//把操作完的数据存入本地文件
rdd5.saveAsTextFile("/home/abc/apps/spark_data/output")

完成操作

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值