-1

データフレームが必要以上(700以上)のパーティションに分割されているコードのバグを見ています。これはシャッフル操作が多すぎますそれらを48パーティションに再分割することができます。パーティションを分割する前に、まずパーティションを少なくしたいので、ここでは合体()を使用できません。変換後のスパークデータフレームのパーティション数を保存する

私はパーティションの数を減らす方法を検討しています。たとえば、スパークのデータフレーム(複数の列を持つ)が10個のパーティションに分割されているとします。列の1つに基づいて変換を行う必要があります。この操作が完了すると、結果として得られるデータフレームのパーティション数は同じになりますか?そうでない場合は、どのようにパーティションの数を決定するでしょうか?

また、repartition()のような明白なもの以外に、私が知っておく必要があるデータフレームのパーティション数を変更する可能性のある他の変換は何ですか?

答えて

0

交換が必要な操作のパーティション数は、spark.sql.shuffle.partitionsで定義されています。特定の値が必要な場合は、コマンドを実行する前に設定する必要があります。

scala> val df = spark.range(0, 1000) 
df: org.apache.spark.sql.Dataset[Long] = [id: bigint] 

scala> spark.conf.set("spark.sql.shuffle.partitions", 1) 

scala> df.orderBy("id").rdd.getNumPartitions 
res1: Int = 1 

scala> spark.conf.set("spark.sql.shuffle.partitions", 42) 

scala> df.orderBy("id").rdd.getNumPartitions 
res3: Int = 42  
関連する問題