将日期时间保存到Spark中的Parquet

时间:2015-02-20 18:09:33

标签: java apache-spark apache-spark-sql parquet

我想在编译时创建包含未知格式数据的Parquet文件。我稍后会将模式作为文本,我知道有些列包含日期和时间。我想用Spark和Java来做这件事。所以我跟着http://spark.apache.org/docs/1.2.1/sql-programming-guide.html#programmatically-specifying-the-schema并使用适当的类型创建了模式。我尝试使用Spark的DataType.TimestampTypeDataType.DateType作为列的日期。但他们都没有工作。当我尝试使用JavaSchemaRDD.saveAsParquetFile保存文件时,我收到错误Unsupported datatype +我尝试过日期的类型。我使用emptyRDD尝试了此操作,因此数据转换没有任何问题。

在查看:http://parquet.incubator.apache.org/documentation/latest/https://github.com/Parquet/parquet-format/blob/master/LogicalTypes.md后,我认为我需要将数据转换为某种整数/长类型,并告知它们代表Date的事实。如果是这样,我怎么能在Spark中做到这一点?或者我可能需要做别的事情?

1 个答案:

答案 0 :(得分:4)

我面临着同样的问题。似乎对Parquet文件的DateType和Timestamp支持将添加到Spark 1.3中(https://github.com/apache/spark/pull/3820https://issues.apache.org/jira/browse/SPARK-4709中的更多信息)。

Spark将使用INT96类型的Parquet来存储Timestamp类型(就像Impala一样)。