在union之后对JavaRdds中的行进行排序

时间:2015-08-04 22:07:34

标签: apache-spark apache-spark-sql

我试图找出有关RDD中行的排序的任何信息。 这是我想要做的:

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

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

只是FI,我真的不关心RDD本身的排序(即rdd2&s;或rdd1' s数据顺序实际上并不关心,但在联合Rdd1记录数据必须首先是要求) 。

1 个答案:

答案 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的实现细节,它不是其接口定义的一部分,因此您不能依赖于将来不会重新实现不同行为的事实。