Spark SQL语句广播

Hap*_*Hua 5 sql apache-spark

有没有办法在Spark SQL语句中使用广播?

例如:

SELECT
    Column
FROM
    broadcast (Table 1)
JOIN
    Table 2
ON
    Table1.key = Table2.key
Run Code Online (Sandbox Code Playgroud)

在我的例子中,表1也是一个子查询.

Sus*_*nar 8

以下是广播连接的语法:

SELECT /*+ BROADCAST(Table 2) */ COLUMN
FROM Table 1 join Table 2
on Table1.key= Table2.key
Run Code Online (Sandbox Code Playgroud)
  1. 要检查广播连接是否发生,您可以在 SQL 选项卡中检查 Spark UI 端口号 18080。

  2. 我们需要确保广播连接是否实际工作的原因是因为之前我们使用了以下语法:/* BROADCASTJOIN(Table2) */ 没有抛出语法错误,但在 UI 中它正在执行排序合并连接

  3. 因此,必须确保我们的连接按预期工作


hi-*_*zir 6

在Spark 2.2或更高版本中,您可以使用计划器提示:

SELECT  /*+ MAPJOIN(Table1) */ COLUMN
FROM Table1 JOIN Table2
ON Table1.key = Table2.key
Run Code Online (Sandbox Code Playgroud)