在生产传输中使用 gsutil 或谷歌云存储 API 有啥优势吗?
Posted
技术标签:
【中文标题】在生产传输中使用 gsutil 或谷歌云存储 API 有啥优势吗?【英文标题】:Is there any advantage to using gsutil or the google cloud storage API in production transfers?在生产传输中使用 gsutil 或谷歌云存储 API 有什么优势吗? 【发布时间】:2017-12-12 00:08:36 【问题描述】:生产传输、gsutil 或谷歌云存储 API 哪个更好用?
【问题讨论】:
【参考方案1】:gsutil
使用 Google Cloud Storage API 传输数据,特别是 JSON API(默认情况下,您可以更改它)。与直接使用 API 相比,它的主要优势在于它已经过调整以快速传输数据。例如,它可以同时打开多个与 GCS 的连接,每个连接同时上传或下载部分文件,这在许多情况下可以显着提高总吞吐量。
没有理由直接针对 API 进行编程也不能提供相同甚至更好的性能,但如果您以最简单的方式实现,我希望 gsutil 平均而言至少会快一点。
【讨论】:
【参考方案2】:我不确定这是否比 Brandon 所说的增加了很多。我对 gcloud 存储和 Python 非常陌生,但我很快发现我更喜欢尽可能使用 gsutil 命令行而不是 python 客户端库。我创建了在启动后从云存储复制几 GB 输入数据的计算实例。我发现在可能的情况下使用 gsutil 命令行执行此操作既简洁又快捷,因此在我的 python 代码中我使用:
import subprocess
subprocess.call("gsutil -m cp gs://my-uberdata-archive/* /home/<username>/rawdata/", shell=True)
主要原因是我可以在一行中执行命令,而使用客户端库需要几行,正如 Brandon 指出的那样,gsutil 支持带有“-m”标志的多线程。我还没有找到使用 Python 客户端库执行此操作的等效方法。
【讨论】:
以上是关于在生产传输中使用 gsutil 或谷歌云存储 API 有啥优势吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Json 转换为 CSV 并将其发送到大查询或谷歌云存储桶
如何使用 gsutil 通过 http 链接从谷歌云存储下载到 AWS 实例或 s3 存储桶?