Совместимость паркета с Dask / Pandas и Pyspark - PullRequest
1 голос
/ 28 января 2020

Это тот же вопрос, что и здесь , но принятый ответ у меня не работает.

Попытка : я пытаюсь сохранить кадр данных dask в паркете отформатировать и прочитать его с искрой.

Проблема : столбец метки времени не может быть интерпретирован pyspark

что я сделал :

Я пытаюсь сохранить Dask dataframe в hfds как паркет, используя

import dask.dataframe as dd
dd.to_parquet(ddf_param_logs, 'hdfs:///user/<myuser>/<filename>', engine='pyarrow', flavor='spark')

Затем я читаю файл с pyspark:

sdf = spark.read.parquet('hdfs:///user/<myuser>/<filename>')
sdf.show()

>>>  org.apache.spark.sql.execution.QueryExecutionException: Parquet column cannot be converted in file hdfs://nameservice1/user/<user>/<filename>/part.0.parquet. Column: [utc_timestamp], Expected: bigint, Found: INT96

, но если я сохраняю dataframe с

dd.to_parquet(ddf_param_logs, 'hdfs:///user/<myuser>/<filename>', engine='pyarrow', use_deprecated_int96_timestamps=True)

столбец ut c timestamp содержит информацию о метке времени в формате unix (1578642290403000)

, это моя среда:

dask==2.9.0
dask-core==2.9.0
pandas==0.23.4
pyarrow==0.15.1
pyspark==2.4.3

1 Ответ

3 голосов
/ 28 января 2020

Тип INT96 был явно включен для обеспечения совместимости с искрой, которая предпочла не использовать стандартный тип времени, определенный в parquet spe c. К сожалению, кажется, что они снова изменились и больше не используют свой собственный предыдущий стандарт, а не паркетный.

Если бы вы могли выяснить, какой тип искры хочет здесь, и опубликовать проблему в репозитории Dask, это будет оценено. Вы хотели бы вывести данные из искры, содержащей временные столбцы, и посмотреть, в каком формате они заканчиваются.

Вы также пробовали использовать бэкэнд fastparquet?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...