Spark共享变量-Broadcast广播变量介绍及scala实现
2016-12-09 09:17
302 查看
通常情况下,当1个function传递到1个spark operation(例如:map、reduce)时,这个function是在远程的集群node上被执行的。这些变量会被复制到每一台机器,在远程机器上不会更新这些变量,然后又传送回driver program。跨tasks共享读写变量的支持,通常是低效率的。然而,spark提供了2种通用的共享变量模式:广播变量和累加器。
广播变量
广播变量允许编程人员在每台机器上保持1个只读的缓存变量,而不是传送变量的副本给tasks。
Spark actions通过步骤的集合进行执行,这个集合被分布式的“shuffle” operations分开来执行。在每个步骤中,Spark自动广播tasks所需的通用数据。这意味着,显式地创建广播变量,仅在当tasks跨多个步骤且需要同样的数据或者使用反序列化的缓存数据时显得非常重要。
实例:
scala> val broadcastVar = sc.broadcast(Array(1, 2, 3))
broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(0)
scala> broadcastVar.value
res0: Array[Int] = Array(1, 2, 3)
广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样才能确保每个节点获取到的值都是一致的。
广播变量
广播变量允许编程人员在每台机器上保持1个只读的缓存变量,而不是传送变量的副本给tasks。
Spark actions通过步骤的集合进行执行,这个集合被分布式的“shuffle” operations分开来执行。在每个步骤中,Spark自动广播tasks所需的通用数据。这意味着,显式地创建广播变量,仅在当tasks跨多个步骤且需要同样的数据或者使用反序列化的缓存数据时显得非常重要。
实例:
scala> val broadcastVar = sc.broadcast(Array(1, 2, 3))
broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(0)
scala> broadcastVar.value
res0: Array[Int] = Array(1, 2, 3)
广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样才能确保每个节点获取到的值都是一致的。
相关文章推荐
- Spark 共享变量——累加器(accumulator)与广播变量(broadcast variable)
- spark之广播共享变量broadcast
- spark共享变量(广播变量Broadcast Variable,累加器Accumulators)
- Spark大师之路:广播变量(Broadcast)源代码分析
- Spark2 broadcast广播变量
- spark中的广播变量broadcast
- spark之共享数据(广播变量详细图解)
- spark中的广播变量broadcast
- Spark2.1 共享变量(Broadcast Variables&Accumulators)分析。
- Spark 共享变量(广播变量和累加器)
- Spark入门(六):共享变量(累加器和广播变量)
- Spark大师之路:广播变量(Broadcast)源码分析
- spark中的广播变量broadcast
- Spark广播之TorrentBroadcast实现原理
- Spark广播变量的设计和实现--加米谷大数据
- <转>spark中的广播变量broadcast
- Spark共享变量(Broadcast Variable和Accumulator)
- Spark 广播变量(broadcast)更新方法
- Spark共享变量(广播变量、累加器)
- Spark 广播变量BroadCast