rdd案例:排行的top3計算

需求:統計出每一個省份每個廣告被點擊數量排行的Top3

package com.baidu.exer

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

object Top3 {
  def main(args: Array[String]): Unit = {

    // 1516609143867 6 7 64 16
    // 時間戳 省份 城市 用戶 廣告 

    val sparkConf: SparkConf = new SparkConf().setAppName("zk").setMaster("local")
    val sparkContext = new SparkContext(sparkConf)

    // TODO 1. 讀取數據文件,獲取原始數據
    val fileRDD: RDD[String] = sparkContext.textFile("input/agent.log")

    // TODO 2. 將讀取的數據進行結構的轉換
    val mapRDD: RDD[(String, Int)] = fileRDD.map(
      line => {
        val datas: Array[String] = line.split(" ")
        (datas(1) + "-" + datas(4), 1)
      }
    )

    // TODO 3. 將轉換結構後的數據進行分組聚合00000
    val reduceRDD: RDD[(String, Int)] = mapRDD.reduceByKey(_ + _)

    // TODO 4. 將聚合後的數據進行結構的轉換
    val mapRDD1: RDD[(String, (String, Int))] = reduceRDD.map {
      case (k, cnt) => {
        val ks: Array[String] = k.split("-")
        (ks(0), (ks(1), cnt))
      }
    }
    // TODO 5. 將轉換結構後的數據根據省份進行分組
    val groupRDD: RDD[(String, Iterable[(String, Int)])] = mapRDD1.groupByKey()

    // TODO 6. 將分組後的數據進行排序,取前三名
    val sRDD: RDD[(String, List[(String, Int)])] = groupRDD.mapValues(
      iter => {
        iter.toList.sortWith(
          (left, right) => {
            left._2 > right._2
          }
        ).take(3)
      }
    )
    sRDD.collect().foreach(println)
    sparkContext.stop()
  }

}

部分數據:

1516609143869 5 3 59 2
1516609143869 8 4 66 25
1516609143869 3 4 63 9
1516609143869 0 8 8 15
1516609143869 0 6 91 17
1516609143869 0 1 18 24
1516609143869 1 4 44 15
1516609143869 1 3 54 13
1516609143869 1 3 30 3
1516609143871 9 6 65 11
1516609143871 0 9 9 19
1516609143871 4 0 32 20
1516609143871 2 1 28 26
1516609143871 5 2 68 24
1516609143871 8 6 58 3
1516609143871 6 7 95 14
1516609143871 7 2 33 27
1516609143871 4 1 16 13
1516609143871 2 2 68 28
1516609143871 5 0 71 19
1516609143871 8 5 66 7
1516609143871 4 4 31 0
1516609143871 9 9 79 18
1516609143871 9 0 69 10
1516609143871 9 6 92 4
1516609143871 8 1 41 4
1516609144913 1 3 87 28
1516609144913 8 0 2 5
1516609144913 5 9 46 23
1516609144913 4 0 7 24
1516609144913 9 5 99 11
1516609144913 7 1 36 16
1516609144913 2 3 96 13
1516609144913 3 1 31 10
1516609144913 0 9 20 27
1516609144913 2 9 41 19
1516609144913 3 3 21 19
1516609144913 3 2 19 28
1516609144913 6 3 61 9
1516609144913 8 1 83 27
1516609144913 9 0 26 20
1516609144913 2 1 38 11
1516609144913 5 6 52 7
1516609144913 6 6 80 19
1516609144913 4 9 83 6
1516609144913 9 1 13 0
1516609144913 4 6 36 26
1516609144913 5 4 20 17
1516609144913 6 9 6 4
1516609144913 7 4 88 22
1516609144913 6 6 99 22
1516609144913 2 9 9 4
1516609144913 6 6 62 8
1516609144913 2 1 62 5
1516609144913 4 3 4 23
1516609144913 7 2 90 26
1516609144913 3 4 17 9
1516609144913 2 5 64 14
1516609144913 1 5 57 3
1516609144913 3 9 36 14
1516609144913 4 3 49 9
1516609144913 5 7 37 15
1516609144913 9 2 28 1
1516609144913 6 3 74 3
1516609144913 9 9 93 27
1516609144913 6 7 67 22
1516609144913 5 0 53 24
1516609144913 9 1 68 27
1516609144913 0 0 99 5
1516609144913 0 6 22 15
1516609144913 7 3 54 6
1516609144913 2 8 47 26
1516609144913 3 1 19 2
1516609144913 2 6 12 21
1516609144913 0 4 65 27
1516609144913 1 4 69 3
1516609144913 5 1 50 14
1516609145936 7 8 28 12
1516609145936 5 0 4 26
1516609145936 5 4 80 20
1516609145936 8 7 87 0
1516609145936 0 2 18 19
1516609145936 1 7 84 7
1516609145936 2 0 41 22
1516609145936 8 2 60 15
1516609145936 8 5 44 15
1516609145936 0 9 17 9
1516609145936 6 3 28 5
1516609145936 6 7 85 28
1516609145936 7 6 70 18
1516609145936 7 1 97 12
1516609145936 1 3 35 23
1516609145936 7 7 19 1
1516609145936 6 4 29 27
1516609145936 5 3 12 7
1516609145936 7 7 40 16
1516609145936 1 4 18 11
1516609145936 0 5 6 11
1516609145936 5 1 90 22
1516609145936 3 0 73 22
1516609145936 6 1 7 15
1516609145936 7 0 49 6
1516609145936 4 3 5 7
1516609145936 7 6 79 20
1516609145936 5 0 83 22
1516609145936 4 3 82 1
1516609145936 5 1 68 27
1516609145936 7 8 9 12
1516609145936 4 5 49 8
1516609145936 6 9 27 18
1516609145936 8 0 37 26
1516609145936 1 7 17 11
1516609145936 4 8 91 29
1516609145936 0 6 98 1
1516609145936 7 6 23 0
1516609145936 0 8 54 8
1516609145936 8 2 76 18
1516609145936 1 4 86 29
1516609145936 1 9 95 10
1516609145936 3 7 49 7
1516609145936 5 1 42 11
1516609145936 5 3 19 9
1516609145936 5 2 78 11
1516609145937 1 4 80 4
1516609145937 8 6 25 7
1516609145937 1 6 56 1
1516609145937 5 7 60 27
1516609145937 0 5 85 27
1516609146961 6 6 19 5
1516609146961 8 8 6 21
1516609146961 8 2 57 25
1516609146961 3 5 87 15
1516609146961 6 7 38 3
1516609146961 1 0 22 19
1516609146961 6 9 76 11
1516609146961 2 2 4 1
1516609146961 6 2 17 27
1516609146961 6 8 98 12
1516609146961 4 8 78 21
1516609146961 4 6 17 13
1516609146961 7 6 51 20
1516609146961 3 2 99 6
1516609146961 1 8 44 28
1516609146961 6 6 0 24
1516609146961 7 8 77 8
1516609146961 7 5 96 22
1516609146961 9 4 42 12
1516609146961 9 7 75 8
1516609146961 3 2 95 26
1516609146961 6 0 88 28
1516609146961 4 2 53 2
1516609146961 5 3 56 17
1516609146961 9 6 98 13
1516609146961 8 9 25 28
1516609146961 0 4 5 15
1516609146961 4 2 16 18
1516609146961 9 2 75 26
1516609146961 5 9 17 4
1516609146961 3 5 34 25
1516609146961 2 2 74 17
1516609146961 0 7 62 24
1516609146961 8 1 52 20
1516609146961 6 6 18 21
1516609146961 8 1 80 24
1516609146961 8 4 3 10
1516609146961 1 3 46 4
1516609146961 0 3 17 8
1516609146961 9 8 82 14
1516609146961 4 8 67 16
1516609146961 5 7 81 13
1516609146961 3 2 62 13
1516609146961 4 7 63 0
1516609146961 3 1 30 26
1516609146961 5 8 64 5
1516609146961 2 7 32 19
1516609146961 1 2 2 28
1516609146961 2 7 14 17
1516609146961 6 7 65 20
1516609146961 1 2 73 16
1516609147979 6 7 24 7
1516609147979 7 4 8 4
1516609147979 0 6 78 7
1516609147979 3 5 48 29
1516609147979 0 7 42 8
1516609147979 3 5 24 0
1516609147979 5 1 74 2
1516609147979 9 4 15 8
1516609147979 7 0 29 7
1516609147979 5 0 97 24
1516609147979 3 6 19 23
1516609147979 3 6 40 14
1516609147979 8 1 0 4
1516609147979 3 1 28 14
1516609147979 5 1 60 19
1516609147979 8 5 83 15
1516609147979 0 1 31 2
1516609147979 4 5 25 27
1516609147979 7 4 74 4
1516609147979 3 5 92 0
1516609147979 6 9 40 18
1516609147979 1 8 36 12
1516609147979 8 8 43 5
1516609147979 8 0 32 10
1516609147979 6 0 20 22
1516609147979 5 5 86 17
1516609147979 6 6 73 29
1516609147979 5 5 43 27
1516609147979 6 7 37 7
1516609147979 8 3 68 28
1516609147979 6 1 42 5
1516609147979 6 6 86 13
1516609147979 7 7 18 14
1516609147979 7 9 26 26
1516609147979 5 8 54 23
1516609147979 4 6 25 13
1516609147979 0 2 22 20
1516609147979 0 5 29 25
1516609147979 6 9 14 26
1516609147979 2 2 33 14
1516609147979 5 0 34 17
1516609147979 0 5 69 6
1516609147979 0 8 6 5
1516609147979 7 7 26 0
1516609147979 7 9 86 23
1516609147979 5 6 30 18
1516609147979 8 3 95 13
1516609147979 9 9 90 25
1516609147979 3 8 39 28
1516609147979 5 0 21 27
1516609147979 9 6 1 1
1516609148997 0 3 70 2
1516609148997 2 8 85 10
1516609148997 4 7 76 6
1516609148997 6 3 79 22
1516609148997 2 3 26 22
1516609148997 0 9 63 18
1516609148997 0 2 69 23
1516609148997 2 0 33 17
1516609148997 8 9 25 18
1516609148997 8 5 37 25
1516609148997 1 7 81 18
1516609148997 1 5 92 1
1516609148997 6 8 67 12
1516609148997 6 4 31 7
1516609148997 3 0 9 6
1516609148997 7 6 20 18
1516609148997 6 1 45 27
1516609148997 0 4 18 20
1516609148997 6 8 17 9
1516609148997 7 3 80 29
1516609148997 0 2 99 19
1516609148997 4 4 30 17
1516609148997 5 4 13 23
1516609148997 5 2 94 10
1516609148997 0 1 1 10
1516609148997 1 5 72 7
1516609148997 3 5 42 5
1516609148997 6 5 79 12
1516609148997 8 5 37 10
1516609148997 6 6 84 1
1516609148997 7 1 49 19
1516609148997 3 1 9 15
1516609148997 1 3 46 10
1516609148997 9 3 43 6
1516609148997 4 8 77 12
1516609148997 9 4 63 20
1516609148997 5 0 30 1
1516609148997 6 7 70 3
1516609148997 8 4 76 22
1516609148997 4 9 16 9
1516609148997 3 5 0 11
1516609148997 3 2 16 27
1516609148997 0 5 70 22
1516609148997 9 9 30 20
1516609148997 1 7 54 18
1516609148997 3 4 51 10
1516609148997 0 1 63 18
1516609148997 2 5 64 7
1516609148997 4 8 39 0
1516609148997 2 9 47 15
1516609148997 7 0 73 23
1516609150012 2 7 95 6
1516609150012 5 1 26 15
1516609150012 1 5 89 2
1516609150012 8 5 33 8
1516609150012 7 7 60 23
1516609150012 2 6 7 13
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章