3

使用事例:

複数のファイルをクラウド ストレージ バケットにアップロードし、そのデータを BigQuery インポートのソースとして使用します。バケットの名前をメタデータとして使用して、データをどのシャード テーブルに入れるかを決定します。

質問:

bigquery テーブルへの部分的なインポートを防ぐために、理想的には、次のようにしたいと思います。

  • ファイルをステージング バケットにアップロードする
  • すべてのファイルが正しくアップロードされたことを確認する
  • ステージング バケットの名前を最終的な名前に変更します (例: gs://20130112)
  • bigquery インポートをトリガーして、バケットをシャード テーブルに読み込みます

gsutil はバケットの名前変更をサポートしていないようですが、これを実現する別の方法は何ですか?

4

2 に答える 2

5

Google Cloud Storage は、バケットの名前変更、またはより一般的には一度に複数のオブジェクトを操作するアトミックな方法をサポートしていません。

すべてのオブジェクトが正しくアップロードされたかどうかが主な関心事である場合 (すべてのオブジェクトがアップロードされた後にのみバケットのコンテンツが表示されるようにする必要があるのではなく)、gsutil cp はそれをサポートします。アップロードに失敗し、ゼロ以外のステータスで終了しました。

したがって、考えられる実装は、gsutil cp を実行してすべてのファイルをアップロードし、BigQuery テーブル読み込みジョブを作成する前に gsutil の終了ステータスをチェックするスクリプトです。

Mike Schwartz、Google Cloud Storage チーム

于 2013-01-30T17:04:39.833 に答える
2

オブジェクト名は、実際にはGoogleCloudStorageではフラットです。サービスの観点からは、「/」は名前の単なる別の文字です。フォルダの抽象化は、gsutilやさまざまなGUIツールなどのクライアントによって提供されます。フォルダの名前を変更するには、クライアントがフォルダ内の各オブジェクトに対して一連のコピーおよび削除操作を要求する必要があります。フォルダの名前を変更するアトミックな方法はありません。

マイクシュワルツ、GoogleCloudStorageチーム

于 2013-02-01T14:54:22.917 に答える