你能用SparkR进行广播加入吗?

时间:2017-06-30 16:08:40

标签: apache-spark sparkr

我正在尝试将大型数据框连接到较小的数据框,并且我看到广播连接是一种有效的方法,根据这个post

但是我在SparkR documentation中找不到广播功能。

所以我想知道你是否可以使用SparkR进行广播加入?

1 个答案:

答案 0 :(得分:3)

Spark 2.3: 此拉取请求中将创建broadcast个函数:https://github.com/apache/spark/pull/17965/files

Spark 2.2:

您可以提供自定义提示进行查询:

head(join(df, hint(avg_mpg, "broadcast"), df$cyl == avg_mpg$cyl))

参考:此代码:https://github.com/apache/spark/blob/master/R/pkg/R/DataFrame.R#L3740

Java,Scala和Python API中的广播功能也是添加广播提示的包装器。提示意味着优化器获取了额外的信息:这个DataFrame很小,我 - 用户 - 保证这一点,你应该在加入其他DataFrame之前进行广播。

旁注: Spark有时会自动执行广播加入。您可以通过设置:

来操纵自动广播联接的配置
spark.sql("SET spark.sql.autoBroadcastJoinThreshold = -1")

这里,-1表示不会广播任何DataFrame来使用Broadcast Join。您可以更多地了解此主题here