有没有办法在Spark SQL语句中使用广播?
例如:
SELECT
Column
FROM
broadcast (Table 1)
JOIN
Table 2
ON
Table1.key = Table2.key
就我而言,表 1 也是一个子查询。
下面是广播联接的语法:
SELECT /*+ BROADCAST(Table 2) */ COLUMN
FROM Table 1 join Table 2
on Table1.key= Table2.key
若要检查是否发生广播加入,可以在"SQL"选项卡中签入 Spark UI 端口号 18080。
我们需要确保广播联接是否实际工作的原因是,之前我们使用以下语法:/* 广播连接(表 2( */没有抛出语法错误,但在 UI 中它正在执行排序合并连接
因此,必须确保我们的连接按预期工作
在 Spark 2.2 或更高版本中,您可以使用规划器提示:
SELECT /*+ MAPJOIN(Table1) */ COLUMN
FROM Table1 JOIN Table2
ON Table1.key = Table2.key