【发布时间】:2020-03-14 09:45:18
【问题描述】:
问题
SparkSQL DataFrame 是否有“spark.default.parallelism”等效项用于窄转换(映射、过滤器等)?
背景
显然,RDD 和 DataFrame 之间的分区控制是不同的。 Dataframe 具有 spark.sql.shuffle.partitions 来控制分区以进行混洗(如果我理解正确,则进行广泛的转换)并且“spark.default.parallelism”将无效。
How Spark dataframe shuffling can hurt your partitioning
但是洗牌与分区有什么关系呢? 好吧,如果您使用的是 RDD,那真的没什么……但是使用数据帧,那就是另一回事了。 ...正如您所见,分区数突然增加。这是因为 Spark SQL 模块包含以下默认配置:spark.sql.shuffle.partitions 设置为 200。
下面的文章表明 spark.default.parallelism 不适用于 Dataframe。
What is the difference between spark.sql.shuffle.partitions and spark.default.parallelism?
spark.default.parallelism 是当用户未明确设置时,由 join、reduceByKey 和并行化等转换返回的 RDD 中的默认分区数。但 spark.default.parallelism 似乎只适用于原始 RDD,在处理数据帧时会被忽略。
【问题讨论】:
标签: apache-spark