2016-06-26 3 views
0

は私が関数に放送変数を入れたとき、その関数は次のように代わりにNULLポインタ、コードの値を取得することはできません見つかっ投げ:スパーク放送変数関数に置くことができない、そうでない場合NullPointerException

def main(){ 
    val serviceSet=Set("abc","ccc") 
    broadServiceSet = sparkContext.broadcast(serviceSet) 
    var keyRDD=esRdd.map(tp=>(map2Key(broadServiceSet.value),tp._1)) 
} 

def map2Key(broadSet:Set[String]):String={ 
    broadSet.contains("testName")//here threw NullPointerException 
} 

答えて

1

すべてのコードから、NullPointerExceptionをスローするべきではありません。ブロードキャスト変数は、関数または他のクラスに非常によく渡すことができます。私はあなたの放送変数をObjectフィールドとして定義していると思います。その場合は、以前はクラスフィールドとして定義されていた初期値を使用する代わりに、JVMコンパイラがmain関数でオーバーライドしたため、例外がスローされます。

関連する問題