在Apache Beam中使用Snappy压缩编写镶木地板文件

时间:2018-11-29 16:28:56

标签: parquet apache-beam snappy

我正在尝试使用Snappy压缩在Apache Beam中编写如下实木复合地板文件

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

我看到可以将AUTOGZIPBZIP2ZIPDEFLATE设置为压缩,但是我无法找到一种方法来压缩将其设置为SNAPPY,有什么主意吗?作为参考,可以如下使用wrting进行avro

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

1 个答案:

答案 0 :(得分:1)

好消息!问完问题后不久,withCompressionCodec(...)编解码器就进入了ParquetIO接收器added。从Apache Beam 2.11.0开始可用。

您可能一直在查看FileIO.Write抽象类,这些抽象类允许您使用withCompression(Compression),该类使用不包含SNAPPY的枚举。如果使用它,它将使用指定的压缩类型压缩 entire 文件,这对于Parquet是不合适的。上面的方法指定了如何在文件内部压缩行组。

幸运的是,ParquetIO阻止您犯此错误。仅公开正确的压缩配置方法。