我试图找出有关RDD中行的排序的任何信息。 这是我想要做的:
Rdd1, Rdd2
Rdd3 = Rdd1.union(rdd2);
在Rdd3中,是否有保证rdd1记录首先出现,之后是rdd2? 对于我的测试,我看到了这种行为 发生了但无法在任何文档中找到它。
只是FI,我真的不关心RDD本身的排序(即rdd2&s;或rdd1' s数据顺序实际上并不关心,但在联合Rdd1记录数据必须首先是要求) 。答案 0 :(得分:0)
在Spark中,特定分区中的元素是无序的,但分区本身是有序的http://spark.apache.org/docs/latest/programming-guide.html#background
如果你检查你的RDD3,你会发现RDD3只是RDD1的所有分区,后面是RDD2的所有分区,所以在这种情况下,结果恰好以你想要的方式排序。你可以在这里看到简单地连接2个RDD的分区是Spark In Apache Spark, why does RDD.union not preserve the partitioner?的标准行为
所以在这种情况下,联盟似乎会给你你想要的东西。但是,这种行为是Union的实现细节,它不是其接口定义的一部分,因此您不能依赖于将来不会重新实现不同行为的事实。