registrieren Ich versuche, den Kryo-Serialisierer in Spark zu verwenden. Ich habe spark.kryo.registrationRequired=true
gesetzt, um sicherzustellen, dass ich alle notwendigen Klassen registriere. Abgesehen von der Anforderung, dass ich meine benutzerdefinierten Klassen registriere, möchte ich auch Spark-Klassen wie StructType
registrieren.
Obwohl ich den Funke StringType
registriert habe, stürzt es jetzt ab, sagend, dass ich StringType$
auch registrieren muss.
Ich importiere Funken implizits, um in JSON einzulesen. Ich bin mir nicht sicher, ob dies zu dem Problem beiträgt.
import spark.implicits._
val foo = spark.read.json(inPath).as[MyCaseClass]
ich erkennen, dass Einstellung Registrierung auf false erforderlich wird diesen Fehler zu stoppen, aber ich bin nicht Performance-Gewinn in diesem Fall zu sehen, so zu machen versuchte sicher, dass ich alle notwendigen Klassen registrieren.
Siehe Kommentare in http://stackoverflow.com/questions/42433383/how-can-i-cache-dataframe-with-kryo-serializer-in- spark: Wenn du nur 'Dataframe' /' Datasets '(und nicht' RDD's) benutzt - gibt es keinen Grund Kryo zu benutzen: Kryo wird benutzt um RDD Daten zu serialisieren; Bei Verwendung von Dataframes/Datasets werden die Encoder von Spark (oder voreingestellte Datentypen) für die Serialisierung verwendet. –
Ich benutze auch eine RDDs. Ich würde gerne nur Datasets verwenden, muss aber zu einem Zeitpunkt auf RDDs zurückgreifen. – Luke