gpt4 book ai didi

apache-spark - Spark SQL 中 Group By 子句的底层实现

转载 作者:行者123 更新时间:2023-12-02 19:53:11 24 4
gpt4 key购买 nike

Spark SQL中Group By子句的底层实现是什么?据我所知,Spark 支持两种类型的 Group by 操作,即 GroupByKey 和 ReduceByKey。 ReduceByKey 是一种映射端缩减,提供比 GroupByKey 更好的性能。

在我们的应用程序代码中,我们在 Spark Dataframes 上使用 Spark SQL,并且不直接创建 RDD。所以,我想到了这个问题:Spark SQL 中的 GroupBy 是否执行 GroupByKey、ReduceByKey 或其他操作。

最佳答案

在 Spark SQL 中,如果您使用 agg 中的一些聚合函数调用 groupBy(key).agg(...) ,典型的物理计划是 HashAggregate ->交换 -> 哈希聚合。第一个 HashAggregate 负责进行部分聚合(在每个执行器本地),然后 Exchange 代表 shuffle,然后第二个 HashAggregate 代表最终结果洗牌后的聚合(最终合并)。

另请注意,有时 HashAggregate 可能会被 SortAggregateObjectHashAggregate 替换,具体取决于聚合函数和聚合的数据类型列,但模式保持不变(它们成对出现,并且中间有 Exchange)。

此外,如果数据提前重新分区(可能来自分桶或之前的某些聚合等),有时 Exchange 可能会丢失(没有随机播放)。

关于apache-spark - Spark SQL 中 Group By 子句的底层实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57720294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com