Spark documentation顯示瞭如何使用Scala案例類來推斷架構,從RDD創建DataFrame。我試圖用sqlContext.createDataFrame(RDD, CaseClass)
來重現這個概念,但是我的DataFrame結果是空的。這裏是我的Scala代碼:如何將基於案例類的RDD轉換爲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()
我看到的輸出是:
Dog(Rex)
Dog(Fido)
++
||
++
||
||
++
我缺少什麼?
謝謝!
這個工作。我還必須將case類的定義移到主函數之外,以避免出現'error:No TypeTag for Dog''。謝謝! – sparkour
我明白了,非常有趣,所以第二個參數只有在從Java API調用時才需要,scala會自動檢測應該轉換爲列的Type字段? – qwwqwwq