美文网首页Spark学习笔记
5.Spark学习(Python版本):共享变量

5.Spark学习(Python版本):共享变量

作者: 马淑 | 来源:发表于2018-08-11 17:38 被阅读16次

    Spark提供了两种类型的变量:广播变量(broadcast variables)和累加器(accumulators)。广播变量用来把变量在所有节点的内存之间进行共享。累加器则支持在所有不同节点之间进行累加计算(比如计数或者求和)。

    可以通过调用SparkContext.broadcast(v)来从一个普通变量v中创建一个广播变量。这个广播变量就是对普通变量v的一个包装器,通过调用value方法就可以获得这个广播变量的值,具体代码如下:

    >>> broadcastVar = sc.broadcast([1, 2, 3])
    >>> broadcastVar.value
    [1,2,3]
    
    累加器

    一个数值型的累加器,可以通过调用SparkContext.accumulator()来创建。运行在集群中的任务,就可以使用add方法来把数值累加到累加器上,但是,这些任务只能做累加操作,不能读取累加器的值,只有任务控制节点(Driver Program)可以使用value方法来读取累加器的值。
    下面是一个代码实例,演示了使用累加器来对一个数组中的元素进行求和:

    >>> accum = sc.accumulator(0)
    >>> sc.parallelize([1, 2, 3, 4]).foreach(lambda x : accum.add(x))
    >>> accum.value
    10
    

    相关文章

      网友评论

        本文标题:5.Spark学习(Python版本):共享变量

        本文链接:https://www.haomeiwen.com/subject/mhidbftx.html