在scala应用程序中,哪里是存储Spark broadcast
变量的最佳位置,以便可以在应用程序的其他位置引用它?
val broadcast:Broadcast = ...
似乎无法将其保存在Object
中,因为:
谢谢
答案 0 :(得分:0)
使用var
而不是val
可能是解决方案。
以下是一种方法。在该示例中,广播变量用于保存缓存。
Object Cache {
private var cache:Broadcast;
// This method must be called by client to initialize the cache
def init(sc:SparkContext) = {
cache = sc.broadcast(loadCache)
}
def getCache() = {
// check that variable is initialized
if cache!=null {
Some(cache)
}
else
{
None
}
}
private def loadCache():List[String] = {
// load data from DB
}
}