Spark sql中的广播连接(Spark 1.6.2)

时间:2018-06-03 06:50:36

标签: sql apache-spark join spark-streaming

如何在spark sql中进行广播。存在主表与10个查找表连接的查询。我想广播查找表以减少混乱。在sql语句中怎么做。我无法播放df并创​​建表格。我只需要在查询中添加广播。我可以很容易地使用spark scala,但我需要在sql中做。

例如 -

select * from A a
join B b 
on a.id = b.id
join C c
on c.id = b.id
join D d
on d.id = c.id
.....
....
...
..

2 个答案:

答案 0 :(得分:2)

Spark 1.x不支持broadcast hints(提示语法有效,但没有效果)。

如果您想使用广播,请执行以下操作之一:

  • 切换到DataFrame API。
  • spark.sql.autoBroadcastJoinThreshold调整为低于表格的最大预期尺寸。

答案 1 :(得分:2)

您可以将广播hint用于查找表:

select /*+ BROADCAST(b), BROADCAST(c), BROADCAST(d) */
* 
from A a
join B b 
on a.id = b.id
join C c
on c.id = b.id
join D d
on d.id = c.id

这将广播查找表。但是,请确保查找表的大小小于8GB