首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java将大文件读入GCP

用Java将大文件读入GCP
EN

Stack Overflow用户
提问于 2019-01-22 11:42:01
回答 1查看 462关注 0票数 0

我正在寻找一个解决方案,如何读取多个文件从FTP到谷歌CloudStorage在一个有效的方式。每个文件大小为3-5 GB,文件量为100-200。

我找到了下一个解决方案:使用GAE实例读取文件。

你知道我还能尝试什么吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-23 17:38:37

最好的方法是使用gsutil compose将谷歌云parallel uploads用于云存储。您可以使用以下命令进行尝试:

代码语言:javascript
复制
gsutil -o GSUtil:parallel_composite_upload_threshold=150M cp bigfile gs://your-bucket

基本上:

  1. gsutil将文件分成多个较小的块,然后
  2. 会将所有文件上传到云存储。
  3. 它们被组合成单个文件
  4. ,然后它删除所有较小的区块

请记住,这在文档中描述了一种权衡:

使用并行复合上传的

提供了上传性能和下载配置之间的折衷:如果你启用并行复合上传,你的上传会运行得更快,但有人需要在每台机器上安装编译的crcmod,其中对象由gsutil或其他Python应用程序下载。请注意,对于此类上传,无论是否启用了并行复合上传选项,都需要crcmod进行下载。对于一些发行版来说,这很容易(例如,它预装在macOS上),但在其他情况下,一些用户会发现这很困难。

如果你不能使用gsutil并且你不能在你的FTP服务器上安装云存储SDK,你可以在一个虚拟机中下载这些文件并在这个虚拟机中运行云存储SDK或gsutil。

App Engine Standard不允许写入磁盘。因此,您上传的任何文件都将存储在memory上,直到您将其上传到云存储。所以我认为这在这种情况下是不方便的。

App Engine Flexible确实允许写入磁盘。这是一个ephemeral磁盘,一旦它重新启动,磁盘get的内容就会被删除,并且每周都会重新启动。但是你不会利用负载均衡器和实例的自动伸缩。

在这种情况下,我认为最好的方法是使用Google Cloud preemptible VM。现在,尽管这种虚拟机最多只能存活一天,但它们的价格比普通虚拟机要低。一旦它们转到get terminated,您就可以检查哪些文件已上载到存储,并在新的可抢占虚拟机中恢复您的工作负载。您还可以使用大量这样的虚拟机并行工作,以加快下载和上传过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54300941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档