gpt4 book ai didi

scala - Spark 中的广播变量

转载 作者:可可西里 更新时间:2023-11-01 15:05:04 26 4
gpt4 key购买 nike

假设我在集群上运行了以下代码:

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 documentation 中所引用,广播变量是“静态查找表”的一个很好的例子

您可能会喜欢 SparkTutorials 发表的这篇有趣的文章

关于scala - Spark 中的广播变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34041436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com