如何解决在数据流中解压缩.tar文件?
我的GCP云存储桶中有很多.tar文件。每个.tar文件都有多个图层。我想使用GCP Dataflow解压缩这些.tar文件,然后将它们放回另一个GCP存储桶中。
我找到了Google为批量解压缩云存储文件提供的实用程序模板,但它不支持.tar文件扩展名。
也许我应该在上传到云之前尝试解压缩文件,或者在Beam中还存在其他东西?
每个tar文件的未压缩大小约为15 TB。
解决方法
此摘录借鉴了Bulk Decompress Template的代码。它还从this quetstion&answer借来的。
您已经很好地注意到,不支持TAR,但是通常,Beam中的压缩/解压缩似乎依赖于Apache Commons' Compression libraries。
您将编写一个执行以下操作的管道:
associatedtype RawValue
您的// Create the pipeline
Pipeline pipeline = Pipeline.create(options);
// Run the pipeline over the work items.
PCollectionTuple decompressOut =
pipeline
.apply("MatchFile(s)",FileIO.match().filepattern(options.getInputFilePattern()))
.apply(
"DecompressFile(s)",ParDo.of(new Decompress(options.getOutputDirectory());
DoFn如下所示:
Decompress
这是一个非常粗糙且未经测试的代码段,但是它应该使您开始正确的道路。 LMK,如果我们需要进一步澄清。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。