web-dev-qa-db-ja.com

pysparkデータフレームを再パーティションする方法は?

_data.rdd.getNumPartitions() # output 2456
_

それから
data.rdd.repartition(3000)しかし
data.rdd.getNumPartitions()#出力はまだ2456です

パーティションの数を変更する方法。 1つのアプローチは、最初にDFをrddに変換し、それをパーティション分割し、次にrddをDFに変換し直すことです。しかし、これには多くの時間がかかります。速い?ありがとう

9
Neo

パーティションの数を確認できます:

data.rdd.partitions.size

パーティションの数を変更するには:

newDF = data.repartition(3000)

パーティションの数を確認できます:

newDF.rdd.partitions.size

再パーティション化の際にはデータのシャッフルに注意してください。これは高価です。必要に応じて、coalesceをご覧ください。

14
Michel Lemay
print df.rdd.getNumPartitions()
# 1


df.repartitions(5)
print df.rdd.getNumPartitions()
# 1


df = df.repartitions(5)
print df.rdd.getNumPartitions()
# 5

Spark:決定的なガイドの第5章基本構造操作を参照
ISBN-13:978-1491912218
ISBN-10:1491912219

4
Ali Payne

increaseパーティションの数にしたい場合は、repartition()を使用できます。

_data = data.repartition(3000)
_

減少パーティション数にしたい場合、フルシャッフルを避けるcoalesce()を使用することをお勧めします。

大きなデータセットをフィルタリングした後、より効率的に操作を実行するのに役立ちます。

_data = data.coalesce(10)
_
2