首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SortMergeJoin不更改为广播连接

SortMergeJoin不更改为广播连接
EN

Stack Overflow用户
提问于 2019-09-03 15:36:12
回答 1查看 129关注 0票数 0

我有两个数据文件,比如sDF (小尺寸)和bDF (大尺寸)。我正在尝试使用BroadCastJoin加入他们。我调用了星火外壳

代码语言:javascript
复制
--conf spark.sql.autoBroadcastJoinThreshold=10737418240

并通过查询验证相同:

代码语言:javascript
复制
scala> (spark.conf.get("spark.sql.autoBroadcastJoinThreshold").toLong)/1024/1024
res11: Long = 10240

较小尺寸的dataframe (sDF)有以下信息:

代码语言:javascript
复制
scala> sDF.count
res14: Long = 419
scala> sDF.groupBy(spark_partition_id).count.show(1000, false)
+--------------------+-----+
|SPARK_PARTITION_ID()|count|
+--------------------+-----+
|148                 |3    |
|31                  |3    |
......

sDF完整的细节可以看到这里

大尺寸数据挖掘(BDF)有以下信息:

代码语言:javascript
复制
scala>bDF.groupBy(spark_partition_id).count.show(10000, false)
+--------------------+--------+
|SPARK_PARTITION_ID()|count   |
+--------------------+--------+
|148                 |52996917|
|31                  |52985656|
|137                 |52991784|
|85                  |52990666|
....

bDF完整的细节可以看到这里

现在在这两种情况下:

代码语言:javascript
复制
- bDF.join(sDF, ..., "inner")
- bDF.join(broadcast(sDF), ..., "inner")

我总是让SortMergeJoin解释。如何将其更改为广播连接?

火花版本: 2.2.1

EN

回答 1

Stack Overflow用户

发布于 2019-09-18 07:52:29

为了强制广播连接,请禁用SortMergeJoin

代码语言:javascript
复制
 spark.conf.set("spark.sql.join.preferSortMergeJoin", false)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57774853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档