2016-03-31 16 views
0

Bir scala uygulamasında, Spark broadcast değişkenini depolamak için en iyi yer budur, böylece uygulamada başka bir yere başvurulabilir?Yayın değişkeni için referans nasıl tutulur

val broadcast:Broadcast = ... 
çünkü bir Object kaydetmek mümkün görünmüyor

:

  • bir nesne başlatılmamış değişkeni olamaz o olmak tarafından yayın değişkeni bir başvuru geçmedi, böylece referansı ayarlamak için nesne üzerinde bir yöntem çağırmak. Bir nesnenin, SparkContext'e bir referansını iletecek kurucusu olmadığı için, yayın değişkenini kendisi ayarlayamaz.

Teşekkür olasılıkla çözümdür bir var yerine val bir daha kullanma

+0

ve nasıl bir soru var? – eliasah

+0

Scala uygulamasında bir yayın değişkenine nasıl başvuru kaydedebilirim, böylece uygulamada başka bir yere erişilebilir (farklı sınıflarda yaşayan rdd'lere aktarılan işlevler). Eğer bir örnek kodunuz varsa çok beğeniliyor. – user1052610

cevap

0

.

Aşağıdakiler bir yaklaşımdır. Örnekte, yayın değişkeni bir önbellek tutmak için kullanılıyor.

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 
} 

} 
İlgili konular