【问题标题】:apache beam does not support gsutil -Zapache 梁不支持 gsutil -Z
【发布时间】:2018-07-25 06:36:29
【问题描述】:

使用 apache 束 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 压缩我的 csv 文件并手动上传到存储桶,一切正常,我们得到的值是压缩后的值。

问题 #2: 似乎 apache beam python sdk 不支持 gsutil 压缩...? 使用 gsutil 有什么解决方法吗?我宁愿在上传之前不要编写 gzip 脚本,因为我会失去下载存储提供的自动解压缩功能。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 确实是同样的问题。感谢您的回答。不幸的是,我无法在阅读之前删除标题,因为下载等是由梁透明地完成的。那我就手动gzip吧.... :(
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2013-11-01
    • 1970-01-01
    • 2014-07-19
    • 2019-09-18
    • 2020-12-24
    • 2018-09-07
    • 1970-01-01
    相关资源
    最近更新 更多