Ho riscontrato un problema con il tentativo di analizzare JSON nel mio lavoro spark. Sto usando spark 1.1.0
, json4s
e Cassandra Spark Connector
. L'eccezione generata è:Spark eccezione non serializzabile durante l'analisi di JSON con json4s
java.io.NotSerializableException: org.json4s.DefaultFormats
esaminando l'oggetto associato DefaultFormats, e con questo stack domanda, è chiaro che DefaultFormats non possono essere serializzati. La domanda ora è cosa fare.
Posso vedere questo ticket apparentemente risolto questo problema nella base di codice di scintilla, aggiungendo la parola chiave transitoria, ma non sono sicuro esattamente come o dove applicarlo al mio caso. La soluzione per istanziare solo la classe DefaultFormats sugli executors, per evitare la serializzazione tutti insieme? Esiste un'altra libreria di analisi JSON per scala/scintilla utilizzata dalle persone? Inizialmente ho provato a usare jackson da solo, ma ho riscontrato alcuni errori con annotazioni che non sono stato in grado di risolvere facilmente e json4s ha funzionato immediatamente. Ecco il mio codice:
import org.json4s._
import org.json4s.jackson.JsonMethods._
implicit val formats = DefaultFormats
val count = rdd.map(r => checkUa(r._2, r._1)).reduce((x, y) => x + y)
Eseguo l'analisi json nella funzione checkUa. Ho provato a fare il conteggio pigro, nella speranza che ritardasse l'esecuzione in qualche modo, ma non ha avuto alcun effetto. Forse spostando il valore implicito all'interno di checkUA? Qualche consiglio molto apprezzato.
Grazie per si risponde, ha funzionato come un fascino. Ecco un'altra domanda sulla scintilla JSON4s che ho ... bloccato di nuovo. http://stackoverflow.com/questions/29666487/json4s-cant-find-constructor-w-spark – worker1138
Questo non sembra funzionare per me: https://stackoverflow.com/questions/48454611/spark-using- json4s-has-serialization-fail – pferrel