火花加载拼写无法从分区列推断时间戳

问题描述 投票:0回答:1

我可以保存一个拼合文件,该拼合文件由看起来像时间戳的列划分,但实际上是一个字符串。当我尝试使用spark.read.load()将镶木地板加载回spark中时,它会自动推断分区列具有日期,从而使我失去所有时间信息。有没有一种方法可以用分区列作为字符串读回镶木地板文件,或者更好的方法是在给定指定格式的情况下将其自动解析为时间戳?这是一个例子:

test_df = spark.createDataFrame(
    [
        ('2020-01-01T00-00-01', 'hello'),
    ],
    [
        'test_dt', 'col1'
    ]
)
test_df.write.save('hdfs:///user/test_write', 'parquet', mode='overwrite', partitionBy='test_dt')
test_read = spark.read.load('hdfs:///user/test_write', 'parquet')
test_read.show(1)

此返回:

+-----+----------+
| col1|   test_dt|
+-----+----------+
|hello|2020-01-01|
+-----+----------+
apache-spark pyspark pyspark-sql pyspark-dataframes
1个回答
0
投票

如果在读取前将spark.sql.sources.partitionColumnTypeInference.enabled设置为false,Spark将抓住所有尝试推断分区列的数据类型的尝试(它们将被视为字符串)。

© www.soinside.com 2019 - 2024. All rights reserved.