使用 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
我已经完成了一些示例代码,关于如何将数据存储在 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