![](/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.