说明
统计 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)