功能和collect函数类似。该函数用于Pair RDD,最终返回Map类型的结果。官方文档说明:
Return the key-value pairs in this RDD to the master as a Map.
Warning: this doesn't return a multimap (so if you have multiple values to the same key, only one value per key is preserved in the map returned)
函数原型
def collectAsMap(): Map[K, V]
实例
/** * User: 过往记忆 * Date: 15-03-16 * Time: 上午09:24 * bolg: * 本文地址:/archives/1289 * 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货 * 过往记忆博客微信公共帐号:iteblog_hadoop */ scala> val data = sc.parallelize(List((1, "www"), (1, "iteblog"), (1, "com"), (2, "bbs"), (2, "iteblog"), (2, "com"), (3, "good"))) data: org.apache.spark.rdd.RDD[(Int, String)] = ParallelCollectionRDD[26] at parallelize at <console>:12 scala> data.collectAsMap res28: scala.collection.Map[Int,String] = Map(2 -> com, 1 -> com, 3 -> good)
从结果我们可以看出,如果RDD中同一个Key中存在多个Value,那么后面的Value将会把前面的Value覆盖,最终得到的结果就是Key唯一,而且对应一个Value。
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Spark函数讲解:collectAsMap】(https://www.iteblog.com/archives/1289.html)