用于多个连接的 Spark SQL 广播 [重复]

Posted

技术标签:

【中文标题】用于多个连接的 Spark SQL 广播 [重复]【英文标题】:Spark SQL broadcast for multiple join [duplicate] 【发布时间】:2019-03-18 09:03:15 【问题描述】:

我知道如何为 2 个表连接进行广播,例如:

SELECT  /*+ MAPJOIN(Table1) */ COLUMN 
FROM Table1 JOIN Table2 
ON Table1.key = Table2.key

但是有没有办法使用广播来连接 3 个表?

SELECT  /* ? */ COLUMN 
FROM Table1 JOIN Table2 ON ...
            JOIN Table3 ON ...

【问题讨论】:

【参考方案1】:

一般情况下,小表会根据配置spark.sql.autoBroadcastJoinThreshold自动广播。

并且会选择广播加入算法。

spark.sql.autoBroadcastJoinThreshold 默认为 10 MB(即 10L * 1024 * 1024),Spark 将检查要使用的连接(请参阅 JoinSelection 执行计划策略)。

【讨论】:

以上是关于用于多个连接的 Spark SQL 广播 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

广播哈希连接 - 迭代

Spark 广播连接将数据加载到驱动程序

带有广播连接的 Spark 流式传输

spark sql:如何优化多个巨大的配置单元表连接

使用HAProxy代理控制Spark SQL Thrift Server服务的最大连接数

在 Spark SQL 中将多个小表与大表连接的最佳方法