失败解压缩从使用 gsutil -Z 上传的文件读取内容



我有一个谷歌数据流管道,它正在读取我用gsutil cp -Z上传的文本文件,换句话说,是gzip格式。

当我尝试运行管道(作业 ID 2018-03-21_01_28_54-102058310819679700 (时,出现以下错误:

FailedToDecompressContent: Content purported to be compressed with gzip but failed to decompress.
at HandleExceptionsAndRebuildHttpConnections (/usr/local/lib/python2.7/dist-packages/apitools/base/py/http_wrapper.py:304)

我可以使用gsutil cp下载文件以将其复制回我的本地计算机。

我在没有任何特定选项的情况下使用ReadFromText

如果我用未压缩的版本替换文件,它可以工作,尽管文件是它的五倍大。

是否可以从压缩文件中读取工作?

确实可以直接从压缩文件中读取。我已经按照这里的片段TextIO.Read这样做了:

Pipeline p = ...;
p.apply(TextIO.Read.named("ReadMyFile")
                   .from("gs://some/inputData.gz")
                   .withCompressionType(TextIO.CompressionType.GZIP));

请注意,如果不指定压缩类型,它将默认为AUTO类型,并推断它是由于扩展名.gz而压缩的文件。

但是,这似乎现已弃用,文档建议改用Compression。Beam的存储库中的一个例子:

FileBasedSource<T> mySource = ...;
PCollection<T> collection = p.apply(Read.from(CompressedSource
    .from(mySource)
    .withCompression(Compression.GZIP)));

最新更新