提问者:小点点

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


是否可以压缩已保存在Google云存储中的文件?

文件由Google数据流代码创建和填充。数据流不能写入压缩文件,但我的要求是以压缩格式保存。


共3个答案

匿名用户

标准TextIO. Sink不支持写入压缩文件,因为从压缩文件读取的可扩展性较差——如果不首先解压缩,则无法将文件拆分到多个工作人员。

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

TextIO的关键变化是修改TextWrite操作(它扩展了FileWrite操作)以支持压缩文件。

此外,请考虑针对Cloud Dataflow和/或Apache Beam提交功能请求。

匿名用户

另一种选择是稍微更改管道。

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

https://cloud.google.com/bigquery/docs/exporting-data https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.extract.compression

匿名用户

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