首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark中的广播连接

Spark中的广播连接
EN

Stack Overflow用户
提问于 2020-07-21 11:41:57
回答 1查看 1.4K关注 0票数 0

我是新来的星火,有一个关于广播Joins的问题。我们使用Spark2.4.0和使用Spark临时视图进行数据转换-

代码语言:javascript
复制
create temporary view product as
select /*+ BROADCAST(b) */
a.custid, b.prodid
from cust a
join prod b
on a.prodid = b.prodid

我知道broadcast joins spark.sql.autoBroadcastJoinThreshold有一个参数,它的值为10,即10MB。但是,我也在某个地方读到广播表的最大大小可以是8GB。这两种价值观的意义何在?

对于广播表/视图,大小是否总是必须在MB中,或者,是否也可以广播(带有提示) 5GB的表/视图(例如)?在这种情况下,我是否必须通过将参数spark.sql.autoBroadcastJoinThreshold设置为更高的值(=5120,即5GB)来操作它的值?或者,它允许我广播表/视图,因为它是低于最大限度(即8GB)?

如果我想广播一个表(以GBs),是否从查询性能的角度推荐它?

任何帮助都是非常感谢的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-21 12:08:07

  • 如果没有在via DF语法的SQL中显式地声明通过广播的提示,那么对于统计量高达10 may的表,催化剂可以选择使用广播连接方法。

如果您确实显式地声明了一个广播连接,那么如果表大小超过8GB,催化剂将忽略并使用广播连接上的另一个连接策略。

更正式的

如果指定了广播提示,则不管autoBroadcastJoinThreshold如何,都会广播带有该提示的连接端。如果连接的两边都有广播提示,估计物理尺寸较小的侧将被广播。如果没有提示,如果表的估计物理大小< autoBroadcastJoinThreshold,则该表将广播到所有执行器节点。

我是否应该广播“是的,如果这意味着查询更快,并且有足够的资源(共享)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63013769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档