【问题标题】:Broadcast Joins in Spark SQLSpark SQL 中的广播连接
【发布时间】:2021-03-20 13:25:30
【问题描述】:

我是 Spark SQL 的新手。我的角色涉及为数据转换编写 Spark sql 查询。最近我在 Spark SQL 中认识了Broadcast Hash Join (BHJ)。我知道BHJ 在广播表非常小时并且可以通过使用查询提示来诱导时表现非常好。 例如

select /*+ BROADCAST(B) */
*
from A
Left Join B
on A.id = B.id;

我还了解到广播连接有两种类型 - Driver BHJExecutor BHJ(后者产生更好的性能)。

因此,当我在查询中使用广播提示时,Spark 是使用 Driver BHJ 还是 Executor BHJ

如何命令 Spark(通过提示等)诱导 Executor BHJ 而不是 Driver BHJ

我使用 Spark SQL 2.4。

谢谢

【问题讨论】:

    标签: apache-spark-sql


    【解决方案1】:

    对于 spark 2.4,您不必提及任何提示。

    您可以在spark config下面设置可以广播的小数据集的限制,默认为10 Mb。

    spark.conf.set("spark.sql.autoBroadcastJoinThreshold" "<value in kb>")
    

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多