W dokumencie Spark documentation pokazano, jak utworzyć obiekt DataFrame z RDD, używając klas przypadków Scala do wyprowadzania schematu. Próbuję odtworzyć tę koncepcję za pomocą sqlContext.createDataFrame(RDD, CaseClass)
, ale moje DataFrame kończy się pusty. Oto mój kod Scala:Jak przekonwertować RDD z klasy na klasy do 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()
Wyjście widzę to:
Dog(Rex)
Dog(Fido)
++
||
++
||
||
++
Czego mi brakuje?
Dzięki!
działało to. Musiałem również przenieść definicję klasy case poza moją główną funkcją, aby uniknąć 'error: No TypeTag available for Dog'. Dzięki! – sparkour
Widzę, bardzo interesujące, więc drugi parametr jest wymagany tylko podczas wywoływania z Java API, scala po prostu automagicznie wykryje pola Typu, który powinien zostać przekonwertowany na kolumny? – qwwqwwq