首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spark SQL中Group By子句的底层实现

Spark SQL中Group By子句的底层实现
EN

Stack Overflow用户
提问于 2019-08-30 11:54:52
回答 1查看 519关注 0票数 1

Spark SQL中Group By子句的底层实现是什么?我知道Spark支持下面两种类型的Group by操作,即GroupByKey和ReduceByKey。ReduceByKey是一种map side reduce,它提供了比GroupByKey更好的性能。

在我们的应用程序代码中,我们在Spark Dataframe上使用Spark SQL,而不是直接创建RDDs。所以,我想到了这个问题,Spark SQL中的GroupBy是做GroupByKey还是ReduceByKey,还是别的什么。

EN

回答 1

Stack Overflow用户

发布于 2019-08-30 12:50:15

在Spark SQL中,如果您在agg中使用一些聚合函数调用groupBy(key).agg(...),则典型的物理计划是HashAggregate -> Exchange -> HashAggregate。第一个HashAggregate负责执行部分聚合(在每个executor上本地执行),然后Exchange表示shuffle,然后第二个HashAggregate表示shuffle之后的最终聚合(最终合并)。

还要注意,根据聚合函数和聚合列的数据类型,有时HashAggregate可能会被SortAggregateObjectHashAggregate替换,但模式保持不变(它们成对出现,中间有Exchange )。

此外,如果预先重新划分了数据(可能来自missing或来自以前的聚合等),则有时Exchange可能会丢失(没有混洗)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57720294

复制
相关文章

相似问题

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