我想在编译时创建包含未知格式数据的Parquet文件。我稍后会将模式作为文本,我知道有些列包含日期和时间。我想用Spark和Java来做这件事。所以我跟着http://spark.apache.org/docs/1.2.1/sql-programming-guide.html#programmatically-specifying-the-schema并使用适当的类型创建了模式。我尝试使用Spark的DataType.TimestampType
和DataType.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中做到这一点?或者我可能需要做别的事情?
答案 0 :(得分:4)
我面临着同样的问题。似乎对Parquet文件的DateType和Timestamp支持将添加到Spark 1.3中(https://github.com/apache/spark/pull/3820和https://issues.apache.org/jira/browse/SPARK-4709中的更多信息)。
Spark将使用INT96类型的Parquet来存储Timestamp类型(就像Impala一样)。