当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyspark GroupedData.agg用法及代码示例


本文简要介绍 pyspark.sql.GroupedData.agg 的用法。

用法:

GroupedData.agg(*exprs)

Compute 聚合并将结果作为 DataFrame 返回。

可用的聚合函数可以是:

  1. 内置聚合函数,例如 avgmaxminsumcount

  2. 使用 pyspark.sql.functions.pandas_udf() 创建的组聚合 pandas UDF

    注意

    组聚合 UDF 不存在部分聚合,即需要完全Shuffle[洗牌]。此外,一个组的所有数据都将加载到内存中,因此如果数据倾斜并且某些组太大而无法放入内存,用户应该注意潜在的 OOM 风险。

    也可以看看

    pandas_udf

如果exprs 是从字符串到字符串的单个dict 映射,则键是要对其执行聚合的列,值是聚合函数。

或者,exprs 也可以是聚合 Column 表达式的列表。

版本 1.3.0 中的新函数。

参数

exprsdict

从列名(字符串)到聚合函数(字符串)的 dict 映射,或 Column 的列表。

注意

内置聚合函数和组聚合 pandas UDF 不能在对该函数的单个调用中混合使用。

例子

>>> gdf = df.groupBy(df.name)
>>> sorted(gdf.agg({"*": "count"}).collect())
[Row(name='Alice', count(1)=1), Row(name='Bob', count(1)=1)]
>>> from pyspark.sql import functions as F
>>> sorted(gdf.agg(F.min(df.age)).collect())
[Row(name='Alice', min(age)=2), Row(name='Bob', min(age)=5)]
>>> from pyspark.sql.functions import pandas_udf, PandasUDFType
>>> @pandas_udf('int', PandasUDFType.GROUPED_AGG)  
... def min_udf(v):
...     return v.min()
>>> sorted(gdf.agg(min_udf(df.age)).collect())  
[Row(name='Alice', min_udf(age)=2), Row(name='Bob', min_udf(age)=5)]

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.sql.GroupedData.agg。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。