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


Python pyspark Accumulator用法及代码示例


本文简要介绍 pyspark.Accumulator 的用法。

用法:

class pyspark.Accumulator(aid, value, accum_param)

可以累积的共享变量,即具有交换和关联“add” 操作。 Spark 集群上的工作任务可以使用 += 运算符将值添加到累加器,但只有驱动程序可以使用 value 访问其值。来自工作人员的更新会自动传播到驱动程序。

虽然 SparkContext 支持诸如 intfloat 等原始数据类型的累加器,但用户还可以通过提供自定义 AccumulatorParam 对象来为自定义类型定义累加器。有关示例,请参阅其 doctest。

例子

>>> a = sc.accumulator(1)
>>> a.value
1
>>> a.value = 2
>>> a.value
2
>>> a += 5
>>> a.value
7
>>> sc.accumulator(1.0).value
1.0
>>> sc.accumulator(1j).value
1j
>>> rdd = sc.parallelize([1,2,3])
>>> def f(x):
...     global a
...     a += x
>>> rdd.foreach(f)
>>> a.value
13
>>> b = sc.accumulator(0)
>>> def g(x):
...     b.add(x)
>>> rdd.foreach(g)
>>> b.value
6
>>> rdd.map(lambda x: a.value).collect() 
Traceback (most recent call last):
    ...
Py4JJavaError: ...
>>> def h(x):
...     global a
...     a.value = 7
>>> rdd.foreach(h) 
Traceback (most recent call last):
    ...
Py4JJavaError: ...
>>> sc.accumulator([1.0, 2.0, 3.0]) 
Traceback (most recent call last):
    ...
TypeError: ...

相关用法


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