大数据小demo- 对网页后台日志中的日志数据做统计,统计独立ip数量,Top10

日志的数据结构概览:

在这里插入图片描述

实现逻辑梳理:

  1. 取出IP,生成一个只有IP的数据集
  2. 简单清洗
  3. 聚合:统计ip出现次数
  4. 按照ip出现次数排序,取出前十

代码实现:

创建AcesslogAgg类实现上述需求

package cn.ityuge.spark.rdd


import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
import org.junit.Test


class AccessLogAgg {
  @Test
  def ipAgg: Unit ={
    //1.spark入口
    val conf = new SparkConf().setMaster("local[6]").setAppName("ip_agg")
    val sc = new SparkContext(conf)
    //2.读取文件,得到数据集
    val rdd: RDD[String] = sc.textFile("file:///C:\\Users\\monster\\Desktop\\my_code\\spark\\data\\access_log_sample.txt")
    //3.获取指定的ip数据集,并在每个后面加1
    val rdd1 = rdd.map(item => (item.split(" ")(0),1))
    //4 简单清洗
    //4.1去除空的ip字段
    // ....这里可以写很多的生产上的业务逻辑
    val clearRdd = rdd1.filter(item=> !item._1.isEmpty)
    //聚合
    val aggRDD = clearRdd.reduceByKey((curr,age)=>curr+age)
    //排序
    val sortedRDD = aggRDD.sortBy(item =>item._2,ascending = false)
    sortedRDD.take(10).foreach(item=>println(item))
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值