Spark教程

Spark RDD共享变量

RDD 共享变量

在 Spark 中,当任何函数传递给转换操作时,它会在远程集群节点上执行。它适用于函数中使用的所有变量的不同副本。这些变量被复制到每台机器上,对远程机器上的变量的任何更新都不会恢复到驱动程序。

广播变量

广播变量支持缓存在每台机器上的只读变量,而不是随任务一起提供它的副本。 Spark 使用广播算法来分发广播变量以降低通信成本。
Spark 操作的执行经过多个阶段,由分布式"shuffle"操作分隔。 Spark 自动广播每个阶段内任务所需的公共数据。以这种方式广播的数据以序列化形式缓存并在运行每个任务之前反序列化。
要创建一个广播变量(假设为 v),请调用 SparkContext.broadcast(v)。让我们通过一个例子来理解。
scala> val v = sc.broadcast(Array(1, 2, 3))
scala> v.value
RDD 共享变量

累加器

累加器是用于执行关联和交换操作的变量,例如计数器或求和。 Spark 提供对数字类型累加器的支持。但是,我们可以添加对新类型的支持。
要创建数字累加器,请调用 SparkContext.longAccumulator() 或 SparkContext.doubleAccumulator() 来累加 Long 或 Double 类型的值。
scala> val a=sc.longAccumulator("Accumulator")
scala> sc.parallelize(Array(2,5)).foreach(x=>a.add(x))
scala> a.value
RDD 共享变量
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4