Google cloud storage 压缩保存在Google云存储中的文件

Google cloud storage 压缩保存在Google云存储中的文件,google-cloud-storage,google-cloud-dataflow,Google Cloud Storage,Google Cloud Dataflow,是否可以压缩已经保存在谷歌云存储中的文件 这些文件由Google数据流代码创建和填充。数据流无法写入压缩文件,但我的要求是将其保存为压缩格式。您可以编写应用程序(可能使用应用程序引擎或计算引擎)来完成此操作。您可以在bucket上配置通知,以便在写入新对象时通知应用程序,然后运行、读取对象、压缩对象、覆盖对象并设置内容编码元数据字段。因为对象写入是事务性的,所以对象的压缩形式在完成之前是不可见的。请注意,如果执行此操作,任何使用数据的应用程序/服务都需要能够处理压缩或未压缩格式。或者,您可以更改

是否可以压缩已经保存在谷歌云存储中的文件


这些文件由Google数据流代码创建和填充。数据流无法写入压缩文件,但我的要求是将其保存为压缩格式。

您可以编写应用程序(可能使用应用程序引擎或计算引擎)来完成此操作。您可以在bucket上配置通知,以便在写入新对象时通知应用程序,然后运行、读取对象、压缩对象、覆盖对象并设置内容编码元数据字段。因为对象写入是事务性的,所以对象的压缩形式在完成之前是不可见的。请注意,如果执行此操作,任何使用数据的应用程序/服务都需要能够处理压缩或未压缩格式。或者,您可以更改数据流设置,使其输出到临时存储桶,并为该存储桶设置通知,以使压缩程序运行,然后该程序将压缩版本写入生产存储桶并删除未压缩的对象。

另一个选项是稍微更改管道

您可以在BigQuery中写入一个表,而不是直接将管道写入GCS,然后在管道完成后,使用GZIP压缩集将BigQuery导出作业启动到GCS


标准TextIO.Sink不支持写入压缩文件,因为读取压缩文件的可伸缩性较低——如果不先解压缩,文件无法在多个工作进程中拆分

如果您想这样做(并且不担心潜在的可伸缩性限制),您可以考虑编写一个自定义的基于文件的接收器来压缩文件。您可以查看示例,也可以查看

TextIO
的关键更改是修改
TextWriteOperation
(扩展了
FileWriteOperation
)以支持压缩文件

也可以考虑对和/或./P>提交一个特征请求。