为啥在使用自适应查询执行时要使用广播时火花洗牌
Posted
技术标签:
【中文标题】为啥在使用自适应查询执行时要使用广播时火花洗牌【英文标题】:Why does spark shuffle when it is going to use broadcast while using Adaptive Query Execution为什么在使用自适应查询执行时要使用广播时火花洗牌 【发布时间】:2022-01-24 06:37:47 【问题描述】:我正在通过 Spark SQL 进行使用自适应查询执行优化的连接,
在右侧,spark 知道表的大小对于广播来说足够小,因此决定进行广播哈希连接。
众所周知,broadcast hash join是窄操作,为什么左表(大)还有exchange
即使在最终的物理计划中,也有交换
https://www.databricks.training/spark-ui-simulator/experiment-3799A/v002-S/index.html?artifact=sql-21
【问题讨论】:
【参考方案1】:你会得到一个基于 Mappers 而不是 Reducers 的 local shuffle。 IE。 localized shuffle 而不是 regular 这样的 shuffle。
见https://www.waitingforcode.com/apache-spark-sql/what-new-apache-spark-3-local-shuffle-reader/read和https://dev.to/yaooqinn/how-to-use-spark-adaptive-query-execution-aqe-in-kyuubi-2ek2
对于背景你也可以细读Spark: disk I/O on stage boundaries explanation
【讨论】:
以上是关于为啥在使用自适应查询执行时要使用广播时火花洗牌的主要内容,如果未能解决你的问题,请参考以下文章