Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark中的广播变量_Scala_Hadoop_Apache Spark - Fatal编程技术网

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内部,集群中的所有节点都会尽可能快速高效地分发变量,方法是下载并上传它们能下载的内容。这使得它们比一个节点尝试做所有事情并将数据推送到所有节点要快得多

如中所述,广播变量是“静态查找表”的一个很好的例子

你可能会喜欢这个有趣的帖子