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


Python pyspark aggregate用法及代碼示例


本文簡要介紹 pyspark.sql.functions.aggregate 的用法。

用法:

pyspark.sql.functions.aggregate(col, initialValue, merge, finish=None)

將二元運算符應用於初始狀態和數組中的所有元素,並將其簡化為單個狀態。通過應用完成函數將最終狀態轉換為最終結果。

這兩個函數都可以使用 Column 的方法,在 pyspark.sql.functions 和 Scala UserDefinedFunctions 中定義的函數。不支持 Python UserDefinedFunctions (SPARK-27052)。

版本 3.1.0 中的新函數。

參數

col Column 或 str

列或表達式的名稱

initialValue Column 或 str

初始值。列或表達式的名稱

merge函數

二進製函數 (acc: Column, x: Column) -> Column... 返回與 zero 相同類型的表達式

finish函數

用於轉換累加值的可選一元函數(x: Column) -> Column: ...

返回

Column

例子

>>> df = spark.createDataFrame([(1, [20.0, 4.0, 2.0, 6.0, 10.0])], ("id", "values"))
>>> df.select(aggregate("values", lit(0.0), lambda acc, x: acc + x).alias("sum")).show()
+----+
| sum|
+----+
|42.0|
+----+
>>> def merge(acc, x):
...     count = acc.count + 1
...     sum = acc.sum + x
...     return struct(count.alias("count"), sum.alias("sum"))
>>> df.select(
...     aggregate(
...         "values",
...         struct(lit(0).alias("count"), lit(0.0).alias("sum")),
...         merge,
...         lambda acc: acc.sum / acc.count,
...     ).alias("mean")
... ).show()
+----+
|mean|
+----+
| 8.4|
+----+

相關用法


注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.sql.functions.aggregate。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。