大數據項目 - 對網頁後臺日誌中的日誌數據做統計,統計獨立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))
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章