Z odpowiedzi here, spark.sql.shuffle.partitions
konfiguruje liczbę partycji, które są używane podczas tasowania danych dla przyłącza lub agregacje.
spark.default.parallelism
jest domyślną liczbę partycji w RDD
y zwracane przez transformacje jak join
, reduceByKey
i parallelize
gdy nie jawnie ustawione przez użytkownika. Zauważ, że spark.default.parallelism
wydaje się działać tylko dla surowego RDD
i jest ignorowany podczas pracy z ramkami danych.
Jeśli wykonywane zadanie nie jest łączeniem lub agregacją, a użytkownik pracuje z ramkami danych, ustawienie tych wartości nie będzie miało żadnego efektu. Można jednak ustawić liczbę partycji samodzielnie, dzwoniąc pod numer df.repartition(numOfPartitions)
(nie zapomnij przydzielić go do nowego val
) w swoim kodzie.
Aby zmienić ustawienia w kodzie można po prostu zrobić:
sqlContext.setConf("spark.sql.shuffle.partitions", "300")
sqlContext.setConf("spark.default.parallelism", "300")
Alternatywnie, można dokonać zmiany Składając ofertę do klastra z spark-submit
:
./bin/spark-submit --conf spark.sql.shuffle.partitions=300 --conf spark.default.parallelism=300
Dodane dodatkowe informacje, nie wahaj się zapytać, czy masz jakieś dodatkowe pytania lub informacje. – Shaido