Wystąpił problem z próbą parsowania json w mojej pracy iskry. Używam spark 1.1.0
, json4s
i Cassandra Spark Connector
. Wyjątkiem jest rzucony:Wyjątek niezeralizowalny Spark podczas analizowania JSON z json4s
java.io.NotSerializableException: org.json4s.DefaultFormats
Badanie DefaultFormats towarzysz obiekt, a ten stack pytanie, jasne jest, że nie można DefaultFormats odcinkach. Teraz pozostaje pytanie, co robić.
Widzę, że to ticket najwyraźniej rozwiązało ten problem w bazie kodu iskrownika, dodając słowo kluczowe przejściowy, ale nie jestem pewien dokładnie, jak lub gdzie zastosować go w mojej sprawie. Czy rozwiązaniem jest tylko tworzenie instancji klasy DefaultFormats na executorach, aby uniknąć serializacji razem? Czy istnieje inna biblioteka analizowania JSON dla scala/iskry, której używają ludzie? Początkowo próbowałem używać samego jacksona, ale natrafiłem na kilka błędów z adnotacjami, których nie mogłem łatwo rozwiązać, a json4s działało po wyjęciu z pudełka. Oto mój kod:
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)
Robię moje json parsowanie w funkcji checkUa. Starałem się sprawić, by leniwy był leniwy, w nadziei, że to jakoś opóźni egzekucję, ale nie przyniosło to efektu. Być może przeniesienie niejawnego val wewnątrz checkUA? Każda rada bardzo doceniona.
Dziękuję Ci odpowiedzieć, to działało jak czar. Oto kolejne iskrowe pytanie JSON4s, które mam ... utknąłem ponownie. http://stackoverflow.com/questions/29666487/json4s-cant-find-constructor-w-spark – worker1138
To nie wydaje się działać dla mnie: https://stackoverflow.com/questions/48454611/spark-using- json4s-has-serialization-failed – pferrel