113 votes

Quelle est la difference entre spark.sql.shuffle.partitions et spark.default.parallelism?

Quelle est la différence entre spark.sql.shuffle.partitions et spark.default.parallelism ?

J'ai essayé de définir les deux en SparkSQL , mais le numéro de tâche de la deuxième étape est toujours 200.

133voto

Shaido Points 11868

À partir de la réponse ici, spark.sql.shuffle.partitions configure le nombre de partitions qui sont utilisés lors de mélanger les données pour les jointures ou les agrégations.

spark.default.parallelism est la valeur par défaut du nombre de partitions en RDDs retourné par les transformations comme join, reduceByKey, et parallelize lorsqu'il n'est pas explicitement définie par l'utilisateur. Notez que spark.default.parallelism semble être la seule à travailler pour les matières premières, RDD et est ignoré lorsque l'on travaille avec dataframes.

Si la tâche que vous effectuez n'est pas une jointure ou de l'agrégation et que vous travaillez avec dataframes puis la définition de ces n'aura aucun effet. Vous pouvez, cependant, définissez le nombre de partitions vous-même en appelant df.repartition(numOfPartitions) (n'oubliez pas de l'attribuer à un nouveau val) dans votre code.


Pour modifier les paramètres de votre code, vous pouvez tout simplement faire:

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

Alternativement, vous pouvez faire le changement au moment de soumettre le travail à un cluster avec spark-submit:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X