2016-08-09 12 views
2

Googleクラウドストレージに既に保存されているファイルを圧縮することはできますか?Googleクラウドストレージに保存されたファイルを圧縮する

ファイルは、Googleのデータフローコードによって作成され、作成されます。データフローは圧縮ファイルに書き込むことはできませんが、私の要件は圧縮された形式で保存することです。

答えて

0

App EngineやCompute Engineを使ってアプリを書くことができます。バケットの通知を設定して、新しいオブジェクトが書き込まれたときにアプリに通知され、実行され、オブジェクトが読み込まれ、圧縮され、オブジェクトが上書きされ、Content-Encodingメタデータフィールドが設定されます。オブジェクトの書き込みはトランザクションであるため、オブジェクトの圧縮されたフォームは完了するまで表示されません。これを行うと、データを消費するすべてのアプリケーション/サービスは、圧縮形式または非圧縮形式のいずれかを処理できる必要があることに注意してください。代わりに、データフロー設定を変更して一時的なバケットに出力し、そのバケットの通知を設定して圧縮プログラムを実行させることができます。そのプログラムは圧縮されたバージョンをプロダクションバケットに書き込み、非圧縮オブジェクト。

2

また、パイプラインを少し変更することもできます。

パイプラインをGCSに直接書き込むのではなく、BigQueryのテーブルに書き込むことができます。パイプラインが完了したら、BigQueryエクスポートジョブをGZIP圧縮設定のGCSにキックオフするだけです。圧縮されたファイルへの書き込み

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

3

圧縮ファイルからの読み取りが少ないスケーラブルであるため、標準TextIO.Sinkではサポートされていません - ファイルが最初に解凍されることなく、複数の労働者の間で分割することはできません。

これを実行したい場合(およびスケーラビリティの可能性があるとは限りません)、ファイルを圧縮するカスタムのファイルベースのシンクを作成することができます。例についてはTextIOをご覧になり、docs how to write a file-based sinkをご覧ください。

TextIOからのキー変更は、TextWriteOperationFileWriteOperationを拡張)を圧縮ファイルをサポートするように変更することです。

また、Cloud Dataflowおよび/またはApache Beamに対して機能要求を提出することを検討してください。

関連する問題