Spark SQL 中 Broadcast Join 一定比 Shuffle Join 快?那你就错了。

本文通过TPC-H测试揭示,在某些情况下,Broadcast Join并不一定比Shuffle Join快。测试显示,当数据量较大时,Broadcast Join可能会因Driver端内存限制导致性能下降。Broadcast Join的工作机制包括数据收集、哈希表构建和广播,这可能导致额外的开销。文章介绍了Executor端的broadcast优化,以避免在Driver端收集数据,提高性能。测试结果表明,核心数多时Shuffle Join占优,广播表数据量增大时Broadcast Join更优。Spark的Executor端Broadcast特性尚未合并到主线版本。
摘要由CSDN通过智能技术生成

本资料来自 Workday 的软件开发工程师 Jianneng Li 在 Spark Summit North America 2020 的 《On Improving Broadcast Joins in Spark SQL》议题的分享。相关 PPT 可以到 你要的 Spark AI Summit 2020 PPT 我已经给你整理好了 里面获取。

背景

相信使用 Apache Spark 进行数据分析的同学对 Spark 中的 Broadcast Join 比较熟悉,其在 Join 之前会把一端比较小的表广播到参与 Join 的 worker 端,具体如下:

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

相比 Shuffle Join,Broadcast Join 的优势主要有:

•避免把大表的数据 shuffle 到其他节点;•很自然地处理数据倾斜

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop 

很多人得出结论:在 Broadcast Join 适用的情况下,Broadcast Join 是要比 Shuffle Join 快!但事实是这样的吗?

TPC-H 测试

在得出结论之前我们先来进行 TPC-H 测试,来看下是不是 Broadcast Join 一定要比 Shuffle Join 快。测试条件如下:

•数据集 10GB;•查询:6千万条数据的 lineitem 表 join 1.5千万的 orders 表•Driver 的配置:1 core, 12 GB•Executor 的配置:一个 instance,18 cores, 102 GB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值