我的GCP云存储桶中有很多.tar文件。每个.tar文件都有多个图层。我想使用GCP数据流解压缩这些.tar文件,并将它们放回另一个GCP存储桶中。
我找到了Google提供的用于批量解压缩云存储文件的实用工具模板,但它不支持.tar文件扩展名。
也许我应该在上传到云端之前尝试解压文件,或者Beam中是否存在其他内容?
每个tar文件未经压缩大约有15 TB。
这个片段借用了批量解压缩模板的代码。它也借用了这个问题
正如您所注意到的,不支持TAR,但一般来说,Beam中的压缩/解压缩似乎依赖于apachecommons的压缩库。
您可以编写一个管道来执行以下操作:
// 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());
您的<code>解压缩
class Dearchive extends DoFn<MatchResult.Metadata, String> {
@ProcessElement
public void process(@Context ProcessContext context) {
ResourceId inputFile = context.element().resourceId();
String outputFilename = Files.getNameWithoutExtension(inputFile.toString());
ResourceId tempFileDir =
this.outputDir.resolve(outputFilename, StandardResolveOptions.RESOLVE_DIRECTORY);
TarArchiveInputStream tarInput = new TarArchiveInputStream(
Channels.newInputStream(FileSystems.open(inputFile)));
TarArchiveEntry currentEntry = tarInput.getNextTarEntry();
while (currentEntry != null) {
br = new BufferedReader(new InputStreamReader(tarInput)); // Read directly
ResourceId outputFile = tempFileDir.resolve(currentEntry.getName(),
StandardResolveOptions.RESOLVE_FILE);
try (WritableByteChannel writerChannel = FileSystems.create(tempFile, MimeTypes.TEXT)) {
ByteStreams.copy(tarInput, Channels.newOutputStream(writerChannel));
}
context.output(outputFile.toString());
currentEntry = tarInput.getNextTarEntry(); // Iterate to the next file
}
}
}
这是一个非常粗糙且未经测试的代码片段,但它应该让你走上正确的道路。LMK,如果我们应该进一步澄清。
我正在使用Apache Commons Compress创建tar归档并解压它们。我的问题从这个方法开始:
我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?
本文向大家介绍Linux下的tar压缩解压缩命令详解(小结),包括了Linux下的tar压缩解压缩命令详解(小结)的使用技巧和注意事项,需要的朋友参考一下 tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选
本文向大家介绍C#文件流进行压缩和解压缩的方法,包括了C#文件流进行压缩和解压缩的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#文件流进行压缩和解压缩的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
我通常使用压缩,使用解压(由于习惯使用gzip)。 我最近得到了一个带有超线程的四核CPU,所以我有8个逻辑核,我注意到许多核在压缩/解压过程中没有使用。 有什么方法可以利用未使用的内核来加快速度吗?
问题内容: 我正在使用以下代码来压缩和解压缩字符串数据,但是我面临的问题是,它很容易被压缩而不会出错,但是decompress方法会引发以下错误。 线程“主”中的异常java.io.IOException:不是GZIP格式 仍然不知道如何解决此问题!!! 问题答案: 这是因为 发送您可以从中获得的,并在其中使用它来构建您的。以下是需要在代码中进行的更改。