2017-10-25 1 views
2

Ich versuche, einige Runtime-Typ-Prüfungen beim Schreiben eines Spark Dataframe hinzuzufügen, im Grunde möchte ich sicherstellen, dass das DataFrame-Schema mit einem Typ T kompatibel ist, bedeutet nicht, dass es muss genau gleich sein. Hier ist mein CodeVergleichen Sie Spark-Schema von Dataframe zum Typ T

def save[T: Encoder](dataframe: DataFrame, url: String): Unit = { 
     val encoder = implicitly[Encoder[T]] 
     assert(dataframe.schema == encoder.schema, s"Unable to save schemas don't match") 

     dataframe.write.parquet(url) 
     } 

Derzeit bin ich überprüfen, ob die Schemata Gleichen sind, wie könnte ich überprüfen, ob sie mit dem Typ T kompatibel sind?

Mit kompatibel Ich meine, wenn ich dataframe.as[T] ausführen, es wird funktionieren (aber ich mag nicht, dass auszuführen, da es recht teuer ist)

Antwort

1

einen leeren Datenrahmen mit dem gleichen Schema erstellen und .as[T] auf es nennen. Wenn es funktioniert, sollte das Schema kompatibel sein!