![](/img/trans.png)
[英]Apache Spark Broadcast variables are type Broadcast? Not a RDD?
[英]BroadCast Variables In Spark
假设我在群集上运行以下代码:
private def modifyDatasetFormat(data : String, mappings : Array[HashMap[String, Int]]) : Array[Tuple2[Tuple3[Int,Int,Int],Int]] = {
}
var map = new HashMap[String,Int]()
map+=("hello" -> 2)
var mappings = new Array[HashMap[String, Int]])(1)
mappings(0)=map
val originalDataset = sc.textFile("/home/paourissi/Desktop/MyProject/nursery.1000.withID")
val dataset = originalDataset.
flatMap(data => modifyDatasetFormat(data, mappingsInMap)).persist(StorageLevel.MEMORY_AND_DISK)
我是否需要使用广播进行值映射或不需要? 基本上我们什么时候使用广播变量呢? 为了效率?
谢谢。
首先,广播变量被设计为在整个集群中共享,同时必须能够在一台机器上适合内存。
其次,广播变量是不可变的,因此以后不能更改它们(如果看一下累加器)。
效率 :在Spark内部,集群中的所有节点都尝试通过下载可能的内容并上传可能的内容来尽可能快速有效地分发变量。 这使得它们比一个节点必须尝试做所有事情并将数据推送到所有节点要快得多。
正如Apache Spark文档中所引用的那样,广播变量是“静态查找表”的一个很好的例子。
你可能会喜欢SparkTutorials这篇有趣的帖子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.