问题描述
我的代码就像
sql = '''
SELECT ...
FROM a
LEFT JOIN b ON ...
LEFT JOIN c ON ...
LEFT JOIN d ON ...
'''
df = spark.sql(sql)
(df
.repartition('col')
.write
.format('parquet')
.mode('overwrite')
.partitionBy('col')
.option(...)
.saveAsTable('...')
)
最终计划显示 2 个广播连接和 1 个 SortMergeJoin。 SortMergeJoin 是 100+ 到 200+ 百万行表之间的 LEFT JOIN。它有偏斜。我的问题是我启用了 AQE,并使用了一些配置(例如使用 spark.sql.shuffle.partitions=40000,spark.default.parallelism=400),但我没有看到 AQE 合并,也没有看到 AdaptiveSparkPlan 节点。 我看到很多 AQE 的例子都在使用 GROUP BY。 AQE 仅适用于 GROUP BY 吗?为什么我的查询没有显示 AdaptiveSparkPlan 节点?
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)