PySpark 广播和累加器

2024 年 8 月 29 日 | 阅读 2 分钟

Apache Spark 使用共享变量进行并行处理。并行处理可以减少执行任务的时间。当驱动程序将任务发送到集群上的执行器时,共享变量的副本会传输到集群的每个节点,以便可以用来执行任务。

Apache Spark 支持以下类型的共享变量。

  • 广播
  • 累加器

1. 广播

广播变量是一种共享变量,用于保存所有节点上的数据副本。 它允许程序员在每台机器上缓存一个只读变量,而不是在任务中传送它的副本。 例如,以有效的方式向每个节点提供大型输入数据集的副本。 以下代码提供了 PySpark 广播类的详细信息。

上面的代码显示了广播变量的用法。 它有一个名为 value 的属性。 它存储数据并用于返回广播值。

它将提供以下输出

输出

Stored data -> ['scala', 'java', 'hadoop', 'spark', 'akka']
Printing a particular element in RDD -> hadoop

2. 累加器

累加器变量用于通过关联和交换操作来组合信息。 我们可以使用累加来进行求和操作计数器(在 MapReduce 中)。 以下代码详细描述了累加器

我们考虑以下示例来描述如何使用累加器变量。 它具有与广播变量相同的名为 value 的属性; 此属性也存储数据。 然后它返回累加器值,但它只能在驱动程序中使用。

在以下示例中,累加器变量被多个节点使用,并返回一个累加值。

上面的程序保存为 accumulator.py,并给出以下输出

输出

The accumulate value is 15

下一个主题PySpark SparkFiles