我正在尝试将文件从Google云存储桶移至VM实例。首先,请确保这是我要完成的正确策略。我有400个演出的数据,仅打开文件就花费了难以置信的时间。我需要做一些并行处理。我的笔记本电脑一次最多只能容纳四个并行处理单元。
首先,我认为这是不可能的,但以防万一,我想读取云存储区中的文件而不将其传输到VM实例。我仅相信,如果笔记本电脑与外部硬盘驱动器的类比类似于VM实例与云存储桶的类比,这是可能的。如果这不可能,那么我必须从云存储桶下载文件。
我尝试使用以下代码:
def download_blob(bucket_name, source_blob_name, destination_file_name):
"""Downloads a blob from the bucket."""
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print('Blob {} downloaded to {}.'.format(
source_blob_name,
destination_file_name))
download_blob('as_lists1', '42.pkl', "kylefoley@instance-1:/home/kylefoley/42.pkl")
未引发任何错误消息。但是,当我尝试列出instance-1硬盘驱动器上的内容时,42.pkl
没有出现,如下所示:
kylefoley@instance-1:~$ ls
distraction.txt env hey you2.txt you.txt
kylefoley@instance-1:~$ pwd
/home/kylefoley
此外,有人知道我进行传输时使用了谁的带宽吗?如果我要为它支付带宽,那么将传输拆分到多台计算机是没有意义的。如果有人的带宽是一个好主意,则最好将数据分成几部分,然后将每个数据集同时传输到另一台计算机上。
答案 0 :(得分:2)
将内容从存储桶复制到GCP VM实例的最简单方法是使用命令gsutil cp -r gs://Your_Bucket/* ./
,请确保将正确的permissions提供给您的服务帐户,以从存储桶或文件中访问文件将您的存储桶公开。
您可以根据项目的需要授予Storage Object Admin,Creator或Viewer。
您还可以使用python下载文件。这是一个对我有用的示例文件:
from google.cloud import storage
if __name__ == '__main__':
bucket_name = 'your_bucket'
source_blob_name = 'your_object'
destination_file_name = 'local_file'
#DOWNLOAD
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print('Blob {} downloaded to {}.'.format(source_blob_name, destination_file_name))
关于您的其他问题,理论上最大带宽速度为2 Gbits / second(Gbps),以实现峰值性能。您可以通过使用附加到实例的ssd来加快此过程。