2017-03-01 9 views
0

は、私は火花が情報を私にプロンプ​​トが表示され、地図操作に巨大なグローバル変数を渡そうとしました:マップ操作にグローバル変数を追加するにはどうすればよいですか? Scalaで

ERROR yarn.ApplicationMaster: User class threw exception: java.lang.StackOverflowError 
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 

コードのようです:

val data = sc.textFile(inputPath).cache() 
val map = Map[String, Int]() 
for (i <- 0 to 9) { 
    map(i.toString) = i 
} 
data.map(sample => { 
    if (map.contains(sample)) { 
     ("Found") 
    } 
    else { 
     ("Not found") 
    } 
}) 
+0

あなたはマップをブロードキャストする必要があると思います。 try val broadcastedMap = sc.broadcast(map) ブロードキャストマップでアクセスしてください。 –

+0

試しても、同じエラーが発生しました... –

+0

なぜ*巨大な*オブジェクトをシリアル化していますか? –

答えて

0

私がデータ型を調整し、解決されています"[Map [String、Int]]"から "Map [String、Int]"に変換します。

関連する問題