RDD:重新分区时保留总订单

时间:2018-07-02 10:38:38

标签: apache-spark pyspark rdd

对于RDD(related)中的顺序,我的一个假设似乎不正确。

假设我希望对RDD进行排序后对其重新分区。

import random

l = list(range(20))
random.shuffle(l)

spark.sparkContext\
.parallelize(l)\
.sortBy(lambda x:x)\
.repartition(3)\
.collect()

哪种产量:

[16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

我们可以看到,订单保留在一个分区内 ,但是总订单未保留在所有分区上。

我想保留RDD的总顺序,如下所示:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

我很难在网上找到任何可以帮助的东西。帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

看来我们可以向montecarlo::montecarlo(double x_min, double x_max){ rand = [](){return 0;}; } 函数提供参数numPartitions=partitions来划分RDD并保留总顺序:

sortBy