Написать файл паркета со сжатием Snappy в Apache Beam - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь записать файл паркета следующим образом в Apache Beam, используя сжатие Snappy

records.apply(FileIO.<GenericRecord>write().via(ParquetIO.sink(schema)).to(options.getOutput()));

Я вижу, что можно установить AUTO, GZIP, BZIP2, ZIPи DEFLATE как сжатие, но я не могу найти способ установить его как SNAPPY, есть идеи, как это сделать?Для справки можно использовать wrting to avro следующим образом:

records.apply("writeAvro", AvroIO.writeGenericRecords(schema).withCodec(CodecFactory.snappyCodec()).to(options.getOutput()));

1 Ответ

0 голосов
/ 08 августа 2019

Хорошие новости!Вскоре после вашего вопроса кодек withCompressionCodec(...) был добавлен в приемник ParquetIO.Это доступно в Apache Beam 2.11.0 на.

Возможно, вы просматривали абстрактные классы FileIO.Write, которые позволяют вам использовать withCompression(Compression), который принимает enum, не включающий SNAPPY.Если бы он использовался, он бы сжал файл весь с указанным типом сжатия, что было бы неприемлемо для Parquet.Приведенный выше метод определяет, как сжимать группы строк внутри файла.

К счастью, ParquetIO не позволяет вам совершить эту ошибку.Предоставляется только правильный метод конфигурации сжатия.

...