Die Spark documentation zeigt, wie Sie einen DataFrame aus einer RDD erstellen und dabei Scala-Fallklassen zum Ableiten eines Schemas verwenden. Ich versuche, dieses Konzept mit sqlContext.createDataFrame(RDD, CaseClass)
zu reproduzieren, aber mein DataFrame endet leer. Hier ist mein Scala Code:Wie konvertiert man eine fallklassenbasierte RDD in einen DataFrame?
// sc is the SparkContext, while sqlContext is the SQLContext.
// Define the case class and raw data
case class Dog(name: String)
val data = Array(
Dog("Rex"),
Dog("Fido")
)
// Create an RDD from the raw data
val dogRDD = sc.parallelize(data)
// Print the RDD for debugging (this works, shows 2 dogs)
dogRDD.collect().foreach(println)
// Create a DataFrame from the RDD
val dogDF = sqlContext.createDataFrame(dogRDD, classOf[Dog])
// Print the DataFrame for debugging (this fails, shows 0 dogs)
dogDF.show()
Der Ausgang Ich sah mich ist:
Dog(Rex)
Dog(Fido)
++
||
++
||
||
++
Was bin ich?
Danke!
Das funktionierte. Ich musste auch die Definition der Fallklasse außerhalb meiner Hauptfunktion verschieben, um 'Fehler zu vermeiden: Kein TypTag für Hund verfügbar '. Vielen Dank! – sparkour
Ich sehe, sehr interessant, so dass der zweite Parameter nur immer beim Aufruf von der Java-API benötigt wird, wird scala nur automatisch die Felder des Typs erkennen, der in Spalten konvertiert werden soll? – qwwqwwq