我已经完成了一些关于如何将数据存储在镶木地板文件中的示例代码,并实现了它,如编程指南中所示:
val schema = StructType(
List(StructField("id", LongType, false), StructField("values", ArrayType(FloatType), false))
)
val dataframe = sqlContext.createDataFrame(rowRDD, schema).saveAsParquetFile("file.parquet")
阅读拼花地板文件时,我使用
sqlContext.parquetFile("file.parquet")
编程指南中的示例总是假设您使用字符串,因此以下操作非常直接:
data.map(t => "Name: " + t(0)).collect().foreach(println)
但是,正如您在我的模式定义中看到的,我使用的是浮点数组。当然,我可以自己将字符串解析为浮点数组,但这似乎不是一种方法。最好的方法是什么?
Row
在与基本索引器一起使用时返回Any
,因此您应该只能使用t.getSeq[Float](0)
,它将以Seq[Float]
的形式返回数据。您也可以在DataFrame
上使用printSchema
来验证该类型是否确实是ArrayType