我在火花流應用程序中廣播一個值。但是我不確定如何在不同的類中訪問該變量,而不是廣播它的類。訪問不同類別的Spark廣播變量
我的代碼如下:
object AppMain{
def main(args: Array[String]){
//...
val broadcastA = sc.broadcast(a)
//..
lines.foreachRDD(rdd => {
val obj = AppObject1
rdd.filter(p => obj.apply(p))
rdd.count
}
}
object AppObject1: Boolean{
def apply(str: String){
AnotherObject.process(str)
}
}
object AnotherObject{
// I want to use broadcast variable in this object
val B = broadcastA.Value // compilation error here
def process(): Boolean{
//need to use B inside this method
}
}
任何人都可以提出如何訪問在這種情況下廣播的變量?
在將廣播變量傳遞給f時有什麼性能影響聯合參數(例如,在咖喱地圖函數中:'map(bcast)(row)')?典型的Spark示例總是在使用它的函數的相同範圍內實例化一個廣播變量。如果您想將地圖功能移出作用域但仍然引用廣播變量,該怎麼辦? – iralls
@ zero323通過其他方法傳遞廣播或廣播值直到達到它的使用位置是一個壞主意?就像如果我有一個在main中創建的run方法,我將broadcast.value(在你的例子中是「foo」)傳遞給.flatmap?在驅動程序中創建廣播還是可以在放入平面圖的函數中創建它? – SparkleGoat