我想知道这个简单的问题: 收集,zipWithIndex,map和flatMap在1分区的RDD上保持顺序吗?
由于
答案 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的顺序