为啥在使用自适应查询执行时要使用广播时火花洗牌

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

【讨论】:

以上是关于为啥在使用自适应查询执行时要使用广播时火花洗牌的主要内容,如果未能解决你的问题,请参考以下文章

js中怎么使用showModalDialog,弹出一个自适应大小窗口????

css样式自适应分辨率

广播加入火花不适用于左外

Paypal 自适应支付和 IPN

设置窗口的自适应大小

为啥在火花中运行时配置单元查询不起作用