spark.sql.shuffle.partitions
和 spark.default.parallelism
有什么区别?
我在SparkSQL
中都尝试过设置,但是第二阶段的任务数一直是200。
最佳答案
来自答案here , spark.sql.shuffle.partitions
配置在为连接或聚合改组数据时使用的分区数。
spark.default.parallelism
是 RDD
中的默认分区数s 由 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
关于performance - spark.sql.shuffle.partitions 和 spark.default.parallelism 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704156/