Паркет с искровой нагрузкой не может определить временную метку из разбитого столбца - PullRequest
1 голос
/ 12 февраля 2020

Я могу сохранить файл паркета, разделенный столбцом, который выглядит как временная метка, но на самом деле является строкой. Когда я пытаюсь загрузить этот паркет обратно в spark, используя spark.read.load(), он автоматически делает вывод, что у разделенного столбца есть дата, и я теряю всю информацию о времени. Есть ли способ прочитать файл паркета обратно с разделенным столбцом в виде строки или, что еще лучше, если он автоматически анализируется с отметкой времени заданного формата? Вот пример:

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|
+-----+----------+

1 Ответ

2 голосов
/ 12 февраля 2020

Если вы установите spark.sql.sources.partitionColumnTypeInference.enabled на false перед чтением, Spark прекратит все попытки определить типы данных столбцов раздела (они будут рассматриваться как строки).

...