Skip to main content
 首页 » 编程设计

python之collectAsMap() 函数如何用于 Spark API

2025年05月04日28zengkefu

我想了解当我们在 spark 中运行 collectAsMap() 函数时会发生什么。根据 Pyspark 文档,它说,

collectAsMap(self) Return the key-value pairs in this RDD to the master as a dictionary.

对于核心 Spark ,它说,

def collectAsMap(): Map[K, V] Return the key-value pairs in this RDD to the master as a Map.

当我尝试在 pyspark 中为列表运行示例代码时,我得到了这个结果:

对于 scala,我得到了这个结果:

我有点困惑为什么它不返回列表中的所有元素。有人可以帮助我了解在这种情况下发生了什么,以及为什么我得到选择性结果。

谢谢。

请您参考如下方法:

collectAsMap 的语义在 Scala 和 Python API 之间是相同的,所以我将查看第一个 WLOG。 PairRDDFunctions.collectAsMap 的文档明确指出:

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)

特别是,当前的实现按顺序将键值对插入到结果映射中,因此在您的两个示例中,只有最后两对存在。

如果您改用 collect,它将返回 Array[(Int,Int)] 而不会丢失任何对。