Scala Spark中的广播变量
假设我在集群上运行了以下代码:Scala Spark中的广播变量,scala,hadoop,apache-spark,Scala,Hadoop,Apache 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[Stri
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内部,集群中的所有节点都会尽可能快速高效地分发变量,方法是下载并上传它们能下载的内容。这使得它们比一个节点尝试做所有事情并将数据推送到所有节点要快得多 如中所述,广播变量是“静态查找表”的一个很好的例子 你可能会喜欢这个有趣的帖子