无法将文件从Google Cloud Bucket传输到VM实例

时间:2019-10-22 05:13:07

标签: python google-cloud-storage

我正在尝试将文件从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

此外,有人知道我进行传输时使用了谁的带宽吗?如果我要为它支付带宽,那么将传输拆分到多台计算机是没有意义的。如果有人的带宽是一个好主意,则最好将数据分成几部分,然后将每个数据集同时传输到另一台计算机上。

1 个答案:

答案 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来加快此过程。