在数据流中解压缩.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,如果我们需要进一步澄清。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...