spark3.0教程:RDD行动算子countByKey()

说明

统计 RDD 每个key出现的次数

声明

def countByKey(): Map[K, Long]

返回值: Map类型:

  • key:RDD 中的key
  • value:key出现的次数

rdd要求

调用的 RDD 是 RDD[(String,Int)] 泛型,其内部元素是 tuple,含有2个值,即: key-value 对

源码实现

def countByKey(): Map[K, Long] = self.withScope {
    self.mapValues(_ => 1L).reduceByKey(_ + _).collect().toMap
}

例子

val sparConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparConf)

val rdd:RDD[(String,Int)] = sc.makeRDD( Array( ("李雷",10),("韩梅梅",2),("lucy",13),("李雷",4),("lucy",25) ) )

val res:collection.Map[String,Long]=rdd.countByKey()
res.foreach(println)
sc.stop()

执行结果:

(李雷,2)
(韩梅梅,1)
(lucy,2)

原文出处:/show_1IX1O0aRjTGA.html