2017-03-17 2 views
1

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.

+0

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. –

+0

Ich benutze auch eine RDDs. Ich würde gerne nur Datasets verwenden, muss aber zu einem Zeitpunkt auf RDDs zurückgreifen. – Luke

Antwort

Verwandte Themen