apache beam不支持gsutil -Z

时间:2018-02-14 16:02:49

标签: google-cloud-dataflow apache-beam gsutil

使用apache beam python SDK 2.2。 那可能是个错误。

我有一个标准csv文件的本地文件夹。 我运行以下命令:

gsutil -m cp -Z -L output.log *.csv gs://my-bucket

正如预期的那样,文件将上传到带有扩展名* .csv的存储桶,其中包含一些元数据,如文档中所述。

问题#1:扩展程序不是.csv.gz,因此compression_type=beam.io.filesystem.CompressionTypes.AUTO根本不起作用,并假设没有压缩(基于扩展)。

因此,如果我将压缩设置为UNCOMPRESSED或GZIP,我会在gcsio.py assert len(value) == size行642中获得一个断言。 内容是未压缩的(可能是由于头部gsutil设置)因此无法正确读取大小(代码似乎期望压缩的值/大小对,但它获得未压缩的值/压缩大小)。

如果我使用7z gzip我的csv文件并手动上传到存储桶,一切正常,我们得到的值是压缩后的压缩值。

问题#2:似乎apache beam python sdk不支持gsutil压缩...? 有没有使用gsutil的工作?我不想在上传之前将内容编写为gzip,因为我会在下载存储空间时失去自动解压缩功能。

PS:我使用来自https://github.com/pabloem/beam_utils/blob/master/beam_utils/sources.py的CsvFileSource的略微修改版本:它读取整个文件而不是逐行。

1 个答案:

答案 0 :(得分:1)

我认为这些文件是在运行时(读取)基于内容编码由GCS解压缩的。 Python SDK目前不支持GCS自动解压缩。相关问题是https://issues.apache.org/jira/browse/BEAM-1874。我们将在不久的将来尝试对此进行研究。