1. ホーム
  2. performance

[解決済み] spark.sql.shuffle.partitionsとspark.default.parallelismの違いは何ですか?

2022-03-03 20:50:36

質問

とはどう違うのですか? spark.sql.shuffle.partitionsspark.default.parallelism ?

に両方設定しようとしたのですが SparkSQL が、2段目のタスク番号が常に200になってしまいます。

どのように解決するのですか?

回答より こちら , spark.sql.shuffle.partitions は、結合や集約のためにデータをシャッフルする際に使用されるパーティションの数を設定します。

spark.default.parallelism はデフォルトのパーティション数で RDD のような変換によって返される join , reduceByKey および parallelize ユーザが明示的に設定しない場合 ただし spark.default.parallelism は、生でしか動作しないようです。 RDD で、データフレームを扱うときは無視されます。

実行中のタスクが結合や集約でなく、データフレームを使用している場合、これらを設定しても何の効果もありません。しかし、パーティションの数を自分で設定することもできます。 df.repartition(numOfPartitions) (に代入することを忘れないでください)。 val ) をコードに追加してください。


コード内の設定を変更するには、単純にこうすればよい。

sqlContext.setConf("spark.sql.shuffle.partitions", "300")
sqlContext.setConf("spark.default.parallelism", "300")

あるいは、クラスタにジョブを投入する際に、以下のように変更することも可能です。 spark-submit :

./bin/spark-submit --conf spark.sql.shuffle.partitions=300 --conf spark.default.parallelism=300