Spark SQL广播提示中间表 [英] Spark SQL broadcast hint intermediate tables
本文介绍了Spark SQL广播提示中间表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在使用广播提示时遇到了问题(也许是缺乏SQL知识).
I have a problem using Broadcast hints (maybe is some lack of SQL knowledge).
我有一个类似的查询
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参数以将其强制到任何地方),但是我不知道如何引用名为AjoinedwithB
I mean, I want to force broadcast join (I would prefer to avoid changing spark parameters to force it everywhere), but I don't know how to refer to the table named AjoinedwithB
我当然可以拆分SQL,使用DF API等.但是我想在一个SQL查询中完成.
Of course I can split the SQL, work with DF API and such... but I would like to do it in a single SQL Query.
推荐答案
您可以使用任一子查询
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 ...
这篇关于Spark SQL广播提示中间表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文