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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。