gpt4 book ai didi

java - Apache beam、FileBasedSink.CompressionType.GZIP 已弃用?

转载 作者:行者123 更新时间:2023-11-30 06:45:02 27 4
gpt4 key购买 nike

我的 apache beam 2.2.0 管道中有代码负责将 json 文件写入 Google Cloud Storage。代码如下:

results.apply(ParDo.of(new TableRowToString()))
.apply("WriteProfile", TextIO.write().to(outputBucket)
.withWritableByteChannelFactory(FileBasedSink.CompressionType.GZIP)
.withNumShards(numChunks));

在查看 Eclipse 中的代码时,我注意到它在文本 FileBasedSink.CompressionType.GZIP 上给我警告:

The field FileBasedSink.CompressionType.GZIP is deprecated

将 gzip 文件写入 GCS 的推荐方法是什么,如果在其他地方(apache beam 文档,SO)有记录,该文档的链接是什么?

最佳答案

对于 beam 2.2.0,我不知道还有其他方法可以将压缩数据写入 Google Cloud Storage。

在 Beam 2.3.0+ 中,他们建议使用更新的 FileIO API。

FileIO 2.4.0 Docs

有了新的FileIO API 就像附加 withCompression 一样简单调用你的FileIO链。

FileIO.write().to("gs://bucket/path").withCompression(Compression.GZIP);

如果您无法更新并且真的想要避免弃用您可以自己实现工厂,但这正是FileBasedSink.CompressionType.GZIP已经这样做了。

TextIO.write().to("gs://bucket/path").withWritableByteChannelFactory(new FileBasedSink.WritableByteChannelFactory() {
@Override
public WritableByteChannel create(final WritableByteChannel channel) throws IOException {
return Compression.GZIP.writeCompressed(channel);
}

@Nullable
@Override
public String getMimeType() {
return MimeTypes.BINARY;
}

@Nullable
@Override
public String getSuggestedFilenameSuffix() {
return Compression.GZIP.getSuggestedSuffix();
}
});

关于java - Apache beam、FileBasedSink.CompressionType.GZIP 已弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737625/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com