【发布时间】: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