0
我正在使用PySpark,我正在寻找一种方法将RDD随机分为n个公平的部分。下式给出:randomSplit不尊重特定权重PySpark
RDD = sc.parallelize(range(50))
我的代码:
from itertools import repeat
def split_population_into_parts(rdd):
N = 4
weight_part = float(1)/float(N)
weights_list = list(repeat(weight_part, N))
repartionned_rdd = rdd.randomSplit(weights = weights_list)
#And just to check what weights give, I did :
for i in repartionned_rdd:
print len(i.collect())
split_population_into_parts(rdd = RDD)
明知权重= [0.25,0.25,0.25,0.25],我的代码可以给为例(如RDD长度):
9
19
11
11
为什么randomSplit不尊重这里的权重?我想要例如12,12,12和14作为长度,或者12,12,13和13。什么是最有效的方法来做到这一点?谢谢 !
LostInOverflow:谢谢,但没有真正的方法来衡量零部件? – DataAddicted
具有良好的统计特性和良好的性能?可能不会。如果你真的需要这个,你可以通过随机键,zipWithIndex进行排序,并执行多个显式范围的过滤器。 – 2016-11-15 10:25:37