收集,zipWithIndex,map和flatMap在1分区的RDD保持顺序?

时间:2017-08-04 11:19:59

标签: apache-spark

我想知道这个简单的问题: 收集,zipWithIndex,map和flatMap在1分区的RDD上保持顺序吗?

由于

1 个答案:

答案 0 :(得分:1)

RDD只能按其键排序。无法对非键/值数据进行排序。

但是如果你在RDD中确实有一些排序的键/值数据,那么collect将保留顺序。请注意,collectAsMap()不会保留顺序。

map()返回非键/值数据,因此返回的RDD未排序。 flatMap()也是如此。

mapToPair()和flatMapToPair怎么样?如果这些工作的RDD包含键/值数据,则没有理由假设输出RDD的键是相同的,因此不能假定保留顺序。我无法想象,在密钥未更改的情况下,已实现这些方法以保留顺序。

mapValues()和flatMapValues()会保留输入RDD的键,因此订单可能会被保留,但您必须自己进行调查。

至于zipWithIndex,根据这个:How Can I Obtain an Element Position in Spark's RDD?不保留zipWithIndex作用于的RDD的顺序