_data.rdd.getNumPartitions() # output 2456
_
それからdata.rdd.repartition(3000)
しかしdata.rdd.getNumPartitions()
#出力はまだ2456です
パーティションの数を変更する方法。 1つのアプローチは、最初にDFをrddに変換し、それをパーティション分割し、次にrddをDFに変換し直すことです。しかし、これには多くの時間がかかります。速い?ありがとう
パーティションの数を確認できます:
data.rdd.partitions.size
パーティションの数を変更するには:
newDF = data.repartition(3000)
パーティションの数を確認できます:
newDF.rdd.partitions.size
再パーティション化の際にはデータのシャッフルに注意してください。これは高価です。必要に応じて、coalesce
をご覧ください。
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
increaseパーティションの数にしたい場合は、repartition()
を使用できます。
_data = data.repartition(3000)
_
減少パーティション数にしたい場合、フルシャッフルを避けるcoalesce()
を使用することをお勧めします。
大きなデータセットをフィルタリングした後、より効率的に操作を実行するのに役立ちます。
_data = data.coalesce(10)
_