用例:
将多个文件上传到云存储桶中,然后将该数据用作 bigquery 导入的源。使用存储桶的名称作为元数据来驱动数据应该进入哪个分表。
问题:
为了防止部分导入到 bigquery 表,理想情况下,我想做以下事情,
- 将文件上传到暂存存储桶
- 验证所有文件已正确上传
- 将暂存存储桶重命名为其最终名称(例如,gs://20130112)
- 触发 bigquery 导入以将存储桶加载到分片表中
由于 gsutil 似乎不支持存储桶重命名,有哪些替代方法可以完成此操作?
用例:
将多个文件上传到云存储桶中,然后将该数据用作 bigquery 导入的源。使用存储桶的名称作为元数据来驱动数据应该进入哪个分表。
问题:
为了防止部分导入到 bigquery 表,理想情况下,我想做以下事情,
由于 gsutil 似乎不支持存储桶重命名,有哪些替代方法可以完成此操作?
Google Cloud Storage 不支持重命名存储桶,或者更一般地说,不支持一次对多个对象进行操作的原子方式。
如果您主要关心的是所有对象都已正确上传(而不是需要确保存储桶内容仅在所有对象上传后可见),gsutil cp 支持 - 如果任何对象上传失败,它将报告无法上传并以非零状态退出。
因此,一个可能的实现是运行 gsutil cp 以上传所有文件的脚本,然后在创建 BigQuery 表加载作业之前检查 gsutil 退出状态。
Mike Schwartz,谷歌云存储团队
对象名称在 Google Cloud Storage 中实际上是平的;从服务的角度来看,“/”只是名称中的另一个字符。文件夹抽象由客户端提供,例如 gsutil 和各种 GUI 工具。重命名文件夹需要客户端请求对文件夹中的每个对象执行一系列复制和删除操作。没有重命名文件夹的原子方法。
Mike Schwartz,谷歌云存储团队