0
私はPySparkを使用していますが、ランダムにRDDをn個の公平な部分に分割する方法を探しています。randomSplitは特定の重みを尊重しませんPySpark
RDD = sc.parallelize(range(50))
マイコード:所与= [0.25、0.25、0.25、0.25]重みは、自分のコードは、(RDDが長として)exempleために与えることができることを知っ
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)
:
9
19
11
11
なぜrandomSplitはここで重みを尊重しませんでしたか?私は、例えば、12,12,12,14の長さを持っているか、12,12,13,13としたいと思っています。これを行う最も効率的な方法は何ですか?ありがとうございました !
LostInOverflow:ありがとうございますが、実際に公平な部品を用意する方法はありませんか? – DataAddicted
良好な統計的性質と適切なパフォーマンスを備えていますか?おそらくそうではありません。ランダムキー、zipWithIndexでソートし、本当に必要な場合は明示的な範囲で複数のフィルターを実行できます。 –