Как сохранить спарк-фрейм в паркет без использования формата INT96 для столбцов меток времени? - PullRequest
1 голос
/ 13 июня 2019

У меня есть искровой фрейм данных, который я хочу сохранить как паркет, а затем загрузить его с помощью библиотеки parquet-avro.

В моем фрейме данных есть столбец меток времени, который преобразуется в столбец меток времени INT96 в паркете.Однако parquet-avro не поддерживает формат INT96 и выбрасывает.

Есть ли способ избежать этого?Можно ли изменить формат, используемый Spark при записи меток времени для паркета в чем-то, поддерживаемом avro?

В настоящее время я использую

date_frame.write.parquet("path")

1 Ответ

1 голос
/ 14 июня 2019

Считывание кода искры. Я обнаружил свойство spark.sql.parquet.outputTimestampType

spark.sql.parquet.outputTimestampType:
Устанавливает, какая временная метка для паркетатип, который используется, когда Spark записывает данные в файлы Parquet.
INT96 - это нестандартный, но обычно используемый тип метки времени в Parquet.
TIMESTAMP_MICROS - это стандартный тип метки времени в Parquet, который хранит количество микросекунд из эпохи Unix.
TIMESTAMP_MILLIS также является стандартным, но с точностью до миллисекунды, что означает, что Spark должен обрезать микросекундную часть своего значения метки времени.

Так что я могу сделать следующее:

spark.conf.set("spark.sql.parquet.outputTimestampType", "TIMESTAMP_MICROS")
data_frame.write.parquet("path")
...