我可以保存一个拼合文件,该拼合文件由看起来像时间戳的列划分,但实际上是一个字符串。当我尝试使用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|
+-----+----------+
如果在读取前将spark.sql.sources.partitionColumnTypeInference.enabled
设置为false
,Spark将抓住所有尝试推断分区列的数据类型的尝试(它们将被视为字符串)。