私は大きな2次元配列で読み込むためのpysparkスクリプトを書いていますので、最初にインデックス配列を生成し、対応する配列で読み取るreadメソッドでマップしようとしました。たとえば、10行の配列がある場合、各パーティションに2行があるため、これらの10行が均等に分割されます。最初のパーティションは3を持っているので、私は予想通りSORTBYを()を示しているなぜsortBy()はSparkでデータを均等にソートできないのですか?
が[[0, 1, 2], [3, 4], [5, 6], [7, 8], [9]]
動作しませんでした。しかし、結果として示した
rdd = sc.range(0, 10, 1).sortBy(lambda x: x, numPartitions = 5)
rdd.glom().collect()
:私はSORTBY()でこの方法を試してみました最後のパーティションには1つの番号しかありません。私が別のreadメソッドで各パーティションをマップすると、パーティションのサイズが異なり、ときどきstragglerが発生します。
そして私はRDDS世代の別の方法を試みた:
rdd = sc.parallelize(range(0, 10, 1), 5)
rdd.glom().collect()
をそして、それは私が望む結果を返します。
[[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]
誰かが、sortBy()を使用する最初のメソッドが均等にソートされた結果を返すことができない理由を説明できますか?