我想了解当我们在 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 中为列表运行示例代码时,我得到了这个结果:
我有点困惑为什么它不返回列表中的所有元素。有人可以帮助我了解在这种情况下发生了什么,以及为什么我得到选择性结果。
谢谢。
请您参考如下方法:
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)] 而不会丢失任何对。
