当前位置: 首页 > 知识库问答 >
问题:

Spark中Group By子句的基础实现SQL

施锋
2023-03-14

Spark SQL中Group By子句的底层实现是什么?我知道Spark支持两种类型的分组操作,即GroupByKey和ReduceByKey。ReduceByKey是一种地图端reduce,与GroupByKey相比提供了更好的性能。

在我们的应用程序代码中,我们在Spark数据帧上使用Spark SQL,而不是直接创建RDD。所以,我有一个问题,Spark SQL中的GroupBy是否执行GroupByKey或ReduceByKey或其他功能。

共有1个答案

端木渝
2023-03-14

在SparkSQL中,如果您调用groupBy(key). agg(...)并在agg中使用一些聚合函数,则典型的物理计划是HashAggregate-

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

此外,有时Exchange可能会丢失(没有洗牌),如果数据是预先重新分区的(可能来自巴克特或之前的一些聚合等)。

 类似资料:
  • 我可以通过两种方式来实现这一点,使用where子句或join查询,在spark SQL中哪个更快?为什么?Where子句比较列添加、选择那些记录还是在列本身上联接,哪个更好?

  • 本文向大家介绍Java实现五子棋的基础方法,包括了Java实现五子棋的基础方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java实现五子棋的具体代码,供大家参考,具体内容如下 任务概述: 五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。 任务过程: 1.绘制棋盘 2.提示黑

  • 如何用基础的sql语句实现group_concat函数的效果?

  • HTTP GET # http_server_GET.py from http.server import BaseHTTPRequestHandler from urllib import parse class GetHandler(BaseHTTPRequestHandler): def do_GET(self): parsed_path = parse.url

  • 我在跟踪http://spark.apache.org/docs/latest/sql-programming-guide.html 打字后: 我有一些我没有看到答案的问题。 首先,什么是$符号?如 第二,我能从第二行得到数据吗(我不知道第二行的数据是什么)。 第三,你将如何阅读彩色图像与火花sql? 第四,我仍然不确定数据集和火花中的数据帧有什么区别。变量df是一个数据帧,所以我可以将“Mich

  • 所以我有一个有3列的spark dataframe。 我怎么能做到这一点,有人能解释一下吗? spark:1.6.2Scala:2.10