Spark SQL 广播提示中间表
Spark SQL broadcast hint intermediate tables
我在使用广播提示时遇到问题(可能是缺乏 SQL 知识)。
我有一个查询
SELECT * /* broadcast(a) */
FROM a
INNER JOIN b
ON ....
INNER JOIN c
on ....
我愿意
SELECT * /* broadcast(a) */
FROM a
INNER JOIN b
ON ....
INNER JOIN c /* broadcast(AjoinedwithB) */
on ....
我的意思是,我想强制广播加入(我宁愿避免更改 spark 参数以强制它无处不在),但我不知道如何引用名为 [=13= 的 table ]
当然我可以拆分 SQL,使用 DF API 等等...但我想在单个 SQL 查询中完成。
您可以使用任一子查询
SELECT /*+ broadcast(a_b) */ *
FROM
(SELECT /*+ broadcast(a) */ * FROM a JOIN b ON ...) AS a_b
JOIN c ON ...
或 CTE:
WITH a_b AS (SELECT /*+ broadcast(a) */ * FROM a JOIN b ON ...)
SELECT /*+ broadcast(a_b) */ * FROM a_b JOIN c ON ...
我在使用广播提示时遇到问题(可能是缺乏 SQL 知识)。
我有一个查询
SELECT * /* broadcast(a) */
FROM a
INNER JOIN b
ON ....
INNER JOIN c
on ....
我愿意
SELECT * /* broadcast(a) */
FROM a
INNER JOIN b
ON ....
INNER JOIN c /* broadcast(AjoinedwithB) */
on ....
我的意思是,我想强制广播加入(我宁愿避免更改 spark 参数以强制它无处不在),但我不知道如何引用名为 [=13= 的 table ]
当然我可以拆分 SQL,使用 DF API 等等...但我想在单个 SQL 查询中完成。
您可以使用任一子查询
SELECT /*+ broadcast(a_b) */ *
FROM
(SELECT /*+ broadcast(a) */ * FROM a JOIN b ON ...) AS a_b
JOIN c ON ...
或 CTE:
WITH a_b AS (SELECT /*+ broadcast(a) */ * FROM a JOIN b ON ...)
SELECT /*+ broadcast(a_b) */ * FROM a_b JOIN c ON ...