當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。