pyspark.RDD.aggregate

RDD. aggregate ( zeroValue : U , seqOp : Callable [ [ U , T ] , U ] , combOp : Callable [ [ U , U ] , U ] ) → U [source]

使用给定的组合函数和中性“零值”聚合每个分区的元素,然后聚合所有分区的结果。

函数 op(t1, t2) 允许修改 t1 并将其作为结果值返回,以避免对象分配;但是,它不应修改 t2

第一个函数 (seqOp) 可以返回一个不同于 RDD 类型的结果类型 U。因此,我们需要一个操作来将 T 合并到 U 中,以及一个操作来合并两个 U。

新增于版本 1.1.0。

Parameters
zeroValue U

每个分区累积结果的初始值

seqOp function

用于在分区中累积结果的函数

combOp function

用于组合来自不同分区的结果的关联函数

Returns
U

聚合结果

示例

>>> seqOp = (lambda x, y: (x[0] + y, x[1] + 1))
>>> combOp = (lambda x, y: (x[0] + y[0], x[1] + y[1]))
>>> sc.parallelize([1, 2, 3, 4]).aggregate((0, 0), seqOp, combOp)
(10, 4)
>>> sc.parallelize([]).aggregate((0, 0), seqOp, combOp)
(0, 0)