首页 > 其他分享 >spark DataFrame聚合操作

spark DataFrame聚合操作

时间:2023-02-13 22:44:40浏览次数:35  
标签:count 聚合 函数 指定 DataFrame 分组 key spark

在聚合操作中,需要指定键或分组方式,以及指定如何转换一列或多列数据的聚合函数。s
除了处理任意类型的值之外,Spark还可以创建以下分组类型:

  • 最简单的分组通过在select语句中执行聚合来汇总整个DataFrame
  • “group by”指定一个或者多个key也可以指定一个或者多个聚合函数,来对包括value的列执行行转换操作。
  • “window”指定一个或者多个key也可以指定一个或者多个聚合函数,来对包含value的列执行转换操作。
  • “grouping set”可用于在多个不同级别进行聚合。grouping set是SQL中的一个保留字,而在DataFrame中需要使用rollup和cube。
  • “rollup”指定一个或多个key,也可以指定一个或多个聚合函数,来对包含value的列执行转换操作,并会针对指定的多个key进行分级分组汇总。
  • “cube”指定一个或多个key,也可以指定一个或多个聚合函数,来对包含value 的列执行转换操作,并会针对指定的多个key进行全组合分组汇总。
    注意:要获得一个精确的结果,开销会非常大。但是计算出一个近似的结果要相对容易的多。通常使用一些近似函数,会提高spark作业的效率

聚合函数

count函数

count函数是一个转换操作而不是一个动作操作。
count可以执行以下2种操作:

  • 对指定列进行计数
  • 使用count(*)或count(1)对所有列进行计数

approx_count_distinct函数

功能与count_distinct一样,但是统计的结果允许有误差。这里approx_count_distinct的另一个参数就指定了可容忍的误差的最大误差。

sumDistinct函数

去重后,进行求sum

方差和标准差

注意:Spark既支持统计样本的标准差,也支持统计总体的标准差。

skewness和kurtosis

偏度系数(skewness)和峰度系数(kurtosis)都是对数据集中的极端数据点的衡量指标。
偏度系数衡量数据相对于平均值的不对称程度。
峰度系数衡量数据分布形态陡缓程度。

协方差和相关性

cov和corr,它们分别用于计算协方差和相关性。相关性采用Pearson相关系数来衡量,范围是-1~+1。协方差的范围由数据中的输入决定。
注意:协方差又分为样本协方差和总体协方差。

聚合输出复杂类型

分组

分组操作的步骤:

  • 指定要对其进行分组的一列或者多列。
  • 指定一个或者多个聚合操作。

利用表达式分组

使用Map进行分组

Map是以键为列,值为要执行的字符串形式的聚合函数。

window函数

在指定数据“窗口”上执行聚合操作,并使用对当前数据的引用来定义它,此窗口指定将哪些行传递给此函数。
注意:group-by与窗口函数之间的区别:
在使用group-by处理数据时,每一行只能进入一个分组;窗口函数基于称为框的一组行,计算表的每一输入行的返回值。也就是说一行数据,在不同的框中属于不用的组。
Spark支持三种窗口函数:排名函数、解析函数和聚合函数。

分组集

group-by表达式可以对一组列上的值进行聚合操作。

rollup

当我们设置分组的key为多个列时,Spark会分析这些列,并根据各列中存在的实际数值,确定列值组合作为分组的key。而rollup分组聚合是一种多维聚合操作,可以执行多种不同group-by风格的计算。

cube

cube分组聚合则更进一步,它不同于rollup的分级聚合,而是对所有参与的列值进行所有维度的全组合聚合。

对元数据进行分组

透视转换

透视转换可以根据列中的不同行创建多个列。

用户自定义的聚合函数

用户定义的聚合函数(UDAF)是用户根据自定义公式或业务逻辑定义自己的聚合函数的一种方法。可以使用UDAF来计算输入数据组的自定义计算。

标签:count,聚合,函数,指定,DataFrame,分组,key,spark
From: https://www.cnblogs.com/ALINGMAOMAO/p/17118119.html

相关文章

  • 聚合页
    INPUTSPECIALCOLUMN每天60秒读懂世界GitHub中国知网arXiv/csdblp/cs     OUTPUTSPECIALCOLUMN语雀Gitee文档库OverLeaf      ......
  • 聚合页
    INSPECIALCOLUMN每天60秒读懂世界GitHub中国知网arXiv/csdblp/cs     OUTSPECIALCOLUMN语雀Gitee文档库OverLeaf      ......
  • [Spark] 用Maven构建Spark项目时可能出现的问题
    [Spark]用Maven构建Spark项目时可能出现的问题至于如何安装Spark,这个网站写的很清楚:ApacheSpark-Installation(tutorialspoint.com)另外建议阅读官方文档。里面介绍......
  • jmeter-聚合报告
    1、什么情况下聚合报告的值是有用的?  在性能测试中,看聚合报告,有前提条件:1、没有网络瓶颈-------------因为,在很多时候,我们在看聚合报告时,会把吞吐量的值等价为......
  • 三层链路聚合
    1、建立隧道interfaceETH-trunk1//1为隧道标号,0-72、关闭二层接口隧道模式下:undoswitchport3、设置隧道端口ipipaddress10.1.1.1244、将物理端口到ETH-trunk隧道模式......
  • zblog问答聚合采集插件,双标题,目录,问答聚合,自动推送
    zblog问答聚合采集插件,格式为(双标题+目录+自动配图+问答聚合+自动推送)该插件仅适合zblog系统,只适用于zblog,介意的勿拍,不能适配其它cms。批量建站做站养站,上词起权重专......
  • Spark相关面试题
    SparkCore面试篇01一、简答题1.Sparkmaster使用zookeeper进行HA的,有哪些元数据保存在Zookeeper?答:spark通过这个参数spark.deploy.zookeeper.dir指定master元数据在zoo......
  • 如何用形象的比喻描述大数据的技术生态?Hadoop、Hive、Spark 之间是什么关系?
    作者:小怪兽链接:https://www.zhihu.com/question/27974418/answer/1862026844来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1Hadoop只是......
  • DataFrame常用操作
    合并相同属性值(groupby)df=pd.DataFrame(data={'name':['zs','li','a','zs'],'value':[2,4,5,6]})a=df.groupby('name')['value'].sum()#得到的结果是s......
  • elasticsearch中使用bucket script进行聚合
    目录1、背景2、需求3、准备数据3.1mapping3.2插入数据4、bucket_script聚合的语法5、聚合5.1根据月份分组排序5.2统计每个月卖了多少辆车5.3统计每个月卖了多少宝马车......