RDD 共享变量

2025 年 3 月 17 日 | 阅读 1 分钟

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

广播变量

广播变量支持缓存在每台机器上的只读变量,而不是为任务提供它的副本。 Spark 使用广播算法来分配广播变量,以降低通信成本。

Spark 操作的执行会经过几个阶段,这些阶段由分布式的“shuffle”操作分隔。 Spark 自动广播每个阶段中任务所需的公共数据。 以这种方式广播的数据以序列化形式缓存,并在运行每个任务之前反序列化。

要创建广播变量(假设为 v),请调用 SparkContext.broadcast(v)。 让我们通过一个例子来理解。

RDD Shared Variables

累加器

累加器是用于执行关联和交换运算的变量,例如计数器或求和。 Spark 提供对数字类型累加器的支持。 但是,我们可以添加对新类型的支持。

要创建数字累加器,请调用 SparkContext.longAccumulator() 或 SparkContext.doubleAccumulator() 来累积 Long 或 Double 类型的值。

RDD Shared Variables
下一个主题Spark Map 函数