合并后 JavaRdds 中的行排序

Ordering of rows in JavaRdds after union

我正在尝试查找有关 RDD 中行排序的任何信息。 这是我正在尝试做的事情:

Rdd1, Rdd2 
Rdd3 = Rdd1.union(rdd2); 

在Rdd3中,是否保证rdd1记录先出现,rdd2记录在后? 对于我的测试,我看到了这个 behaviorunion 发生但无法在任何文档中找到它。

只是 FI,我真的不关心 RDD 本身的顺序(即 rdd2 或 rdd1 的数据顺序真的不关心但是在 union Rdd1 之后记录数据必须先来是要求)。

在 Spark 中,特定分区中的元素是无序的,但分区本身是有序的 http://spark.apache.org/docs/latest/programming-guide.html#background

如果你检查你的 RDD3,你应该发现 RDD3 只是 RDD1 的所有分区,后面是 RDD2 的所有分区,所以在这种情况下,结果恰好按照你想要的方式排序。你可以在这里读到,简单地连接来自 2 个 RDD 的分区是 Spark

的标准行为

所以在这种情况下,联盟似乎会给你想要的。但是这个行为是 Union 的一个实现细节,它不是它的接口定义的一部分,所以你不能相信它不会在未来以不同的行为重新实现。