使用 Spark 来自 Parquet 的案例 Class

Case Class from Parquet using Spark

我已经完成了一些示例代码,关于如何将数据存储在 parquet 文件中并实现了它,就像 programming guide:

中所示
val schema = StructType(
  List(StructField("id", LongType, false), StructField("values", ArrayType(FloatType), false))
)
val dataframe = sqlContext.createDataFrame(rowRDD, schema).saveAsParquetFile("file.parquet")

读取parquet文件时,我使用

sqlContext.parquetFile("file.parquet")

编程指南中的示例始终假设您使用的是字符串,因此以下内容非常简单:

data.map(t => "Name: " + t(0)).collect().foreach(println)

但是,正如您在我的架构定义中看到的那样,我使用的是浮点数组。当然,我可以自己将字符串解析为浮点数组,但这似乎不是这样做的方法。这样做的最佳方法是什么?

Row returns 一个 Any 当与基本索引器一起使用时,所以你应该能够只使用 t.getSeq[Float](0) 并且它将 return您的数据为 Seq[Float]。您还可以在 DataFrame 上使用 printSchema 来验证类型确实是 ArrayType