Совместимы ли паркетные файлы, созданные с помощью pyarrow и pyspark?

Я должен преобразовать аналитические данные в JSON в паркет в два этапа. Для больших объемов существующих данных я пишу работу PySpark и делаю

df.repartition(*partitionby).write.partitionBy(partitionby).
    mode("append").parquet(output,compression=codec)

однако для дополнительных данных я планирую использовать AWS Lambda. Вероятно, PySpark был бы излишним для этого, и поэтому я планирую использовать PyArrow для него (я знаю, что это излишне связано с Pandas, но я не мог найти лучшую альтернативу). Итак, в основном:

import pyarrow.parquet as pq
pq.write_table(table, outputPath, compression='snappy',
    use_deprecated_int96_timestamps=True)

Я хотел знать, будут ли совместимы файлы Parquet, написанные как PySpark, так и PyArrow (по отношению к Athena)?

1 ответ

Решение

Паркет файл, написанный pyarrow (длинное название: Apache Arrow) совместимы с Apache Spark. Но вы должны быть осторожны, какие типы данных вы записываете в файлы Parquet, так как Apache Arrow поддерживает их более широкий диапазон, чем Apache Spark. Там в настоящее время флаг flavor=spark в pyarrow это можно использовать для автоматической установки некоторых параметров совместимости, чтобы Spark мог снова прочитать эти файлы. К сожалению, в последнем выпуске этот параметр не является достаточным (ожидайте, чтобы измениться с pyarrow==0.9.0). Вы должны позаботиться о том, чтобы записывать метки времени, используя устаревший тип INT96 (use_deprecated_int96_timestamps=True), а также избегая целочисленных столбцов без знака. Для столбцов целых чисел без знака просто преобразуйте их в целое число со знаком. К сожалению, Spark выдает ошибки, если у вас есть неподписанный тип в вашей схеме вместо того, чтобы просто загружать их как подписанные (они на самом деле всегда хранятся как подписанные, но помечаются только флагом как неподписанные). Принимая во внимание эти две вещи, файлы должны быть доступны для чтения в Apache Spark и AWS Athena (то есть под Presto под капотом).

Другие вопросы по тегам