我想在编译时用未知格式的数据创建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
保存文件时,我得到了错误不支持的数据类型
我尝试的日期类型。我用emptyRDD
尝试了这个,所以数据转换没有任何问题。
在研究了:http://parquet.incubator.apache.org/documentation/latest/和https://github.com/Parquet/parquet-format/blob/master/LogicalTypes.md之后,我认为我需要将数据转换为一些整数/长类型,并告知它们代表日期的事实。如果是这样,我如何在Spark中做到这一点?或者我需要做其他事情?
我面临着完全相同的问题。似乎Parquet文件的日期类型和时间戳支持将在Spark 1.3中添加(更多信息https://github.com/apache/spark/pull/3820和https://issues.apache.org/jira/browse/SPARK-4709)。
Spark将使用INT96类型的Parquet来存储时间戳类型(就像Impala一样)。