PySpark 在 Parquet 中错误地输出“01/01/0001”和“12/31/9999”
PySpark Outputting '01/01/0001' and '12/31/9999' Incorrectly in Parquet
我正在使用 PySpark 3.0.1 生成拼花文件。
执行以下命令时
sparkDF.write.mode("overwrite").parquet(file_name)
9999-12-31 00:00:00.0000000
日期时间在 parquet 文件中写为 1816-03-29 11:56:08.066277376
。
0001-01-01 00:00:00.0000000
日期时间在 parquet 文件中写为 1754-08-29 04:43:41.128654848
。
相比之下,sparkDF.write.mode("overwrite").csv(file_name)
以 CSV 格式输出正确的日期时间值。
有人知道这是怎么回事吗?谢谢。
我认为问题在于您正在使用的任何系统都可能会误解或在处理 int96 时间戳格式时出现溢出问题。你可以写一个更标准的格式为:
spark.conf.set("spark.sql.parquet.outputTimestampType", "TIMESTAMP_MICROS")
data_frame.write.parquet("path")
(来源:)
我正在使用 PySpark 3.0.1 生成拼花文件。
执行以下命令时
sparkDF.write.mode("overwrite").parquet(file_name)
9999-12-31 00:00:00.0000000
日期时间在 parquet 文件中写为 1816-03-29 11:56:08.066277376
。
0001-01-01 00:00:00.0000000
日期时间在 parquet 文件中写为 1754-08-29 04:43:41.128654848
。
相比之下,sparkDF.write.mode("overwrite").csv(file_name)
以 CSV 格式输出正确的日期时间值。
有人知道这是怎么回事吗?谢谢。
我认为问题在于您正在使用的任何系统都可能会误解或在处理 int96 时间戳格式时出现溢出问题。你可以写一个更标准的格式为:
spark.conf.set("spark.sql.parquet.outputTimestampType", "TIMESTAMP_MICROS")
data_frame.write.parquet("path")
(来源: