【发布时间】:2021-05-03 15:34:28
【问题描述】:
我是 Spark SQL 的新手。我对加入期间的分区使用有疑问
假设有一个名为test1 的表保存在10 分区(镶木地板)文件中。还假设spark.sql.shuffle.partitions = 200。
问题:
如果 test1 用于 Join 到另一个表,Spark 将使用 10 分区(这是表所在的分区数)执行操作,还是会在 200 分区中重新分区表(根据 shuffle分区值)然后执行连接?在这种情况下,连接将产生更好的性能。如果答案是连接将使用10 分区执行,那么总是将连接表重新分区(CLUSTER BY)到更多的分区以提高连接性能不是更好吗?
在 Spark UI 中,我看到一些 stages 仅使用 10 tasks,而其他 stages 使用 200 任务。
谁能帮我理解一下。
谢谢
【问题讨论】:
标签: apache-spark apache-spark-sql