【发布时间】:2019-03-27 20:46:52
【问题描述】:
有没有办法在 Spark SQL 语句中使用广播?
例如:
SELECT
Column
FROM
broadcast (Table 1)
JOIN
Table 2
ON
Table1.key = Table2.key
在我的例子中,表 1 也是一个子查询。
【问题讨论】:
标签: sql apache-spark
有没有办法在 Spark SQL 语句中使用广播?
例如:
SELECT
Column
FROM
broadcast (Table 1)
JOIN
Table 2
ON
Table1.key = Table2.key
在我的例子中,表 1 也是一个子查询。
【问题讨论】:
标签: sql apache-spark
广播连接的语法如下:
SELECT /*+ BROADCAST(Table 2) */ COLUMN
FROM Table 1 join Table 2
on Table1.key= Table2.key
要检查是否发生广播连接,您可以在 SQL 选项卡中检查 Spark UI 端口号 18080。
我们需要确保广播连接是否实际工作的原因是因为之前我们使用了以下语法: /* BROADCASTJOIN(Table2) */ 没有抛出语法错误,但在 UI 中它正在执行排序合并连接
因此,必须确保我们的联接按预期工作
【讨论】:
在 Spark 2.2 或更高版本中,您可以使用规划器提示:
SELECT /*+ MAPJOIN(Table1) */ COLUMN
FROM Table1 JOIN Table2
ON Table1.key = Table2.key
【讨论】: