如何快速从Google Cloud Datalab笔记本中获取数据?

时间:2016-03-01 09:51:57

标签: google-cloud-datalab

我只想快速从Google Cloud Datalab笔记本中获取一些输出数据,最好是作为一次性CSV文件。

我做到了这一点:

writer = csv.writer(open('output.csv', 'wb'))
for row in rows:
    writer.writerow(row)

这会写一个本地文件,但我无法在浏览器中打开它,或者(请参阅如何)从Cloud Datalab下载它。

如何快速将数据作为CSV文件抓取?我想也许我必须使用存储API并编写它?我发现文档有点难以理解,我有类似的东西:

import gcp
import gcp.storage as storage

// create CSV file? construct filepath? how?

mybucket = storage.Bucket(myfile)
mybucket.create()

5 个答案:

答案 0 :(得分:10)

至少有两个选项:

从Datalab本地下载文件

此选项似乎在当前的Datalab代码中不可用。我已经为Datalab提交了pull request,可以解决您的问题。该修复程序允许用户使用Datalab界面编辑/下载非笔记本(* .ipynb)的文件。我可以使用pull请求中的修改从Datalab下载/编辑文本文件。

将文件发送到Google云端的存储广告

以下link可能有助于编写代码,使用Storage API将文件传输到Google Cloud中的存储分区。

这是一个有效的例子:

from datalab.context import Context
import datalab.storage as storage

sample_bucket_name = Context.default().project_id + '-datalab-example'
sample_bucket_path = 'gs://' + sample_bucket_name

sample_bucket = storage.Bucket(sample_bucket_name)

# Create storage bucket if it does not exist
if not sample_bucket.exists():
    sample_bucket.create()

# Write an item to the storage bucket
sample_item = sample_bucket.item('stringtofile.txt')
sample_item.write_to('This is a string', 'text/plain')

# Another way to copy an item from Datalab to Storage Bucket
!gsutil cp 'someotherfile.txt' sample_bucket_path

复制项目后,点击here查看Google Cloud中存储分区中的项目

答案 1 :(得分:0)

你在谈论多少数据?我假设这不是一个BigQuery表,因为我们有API。

对于存储API,将存储桶视为文件夹。您需要在Bucket中创建一个Item。如果将数据作为字符串分配给Python变量,则可以使用Item(write_to)上的API。

如果您像使用output.csv一样写入文件,那么该文件将存在于Datalab运行的Docker容器中。这意味着它是瞬态的,并且在容器关闭时会消失。但是,在此期间可以访问它,您可以使用%% bash cell magic将其发送到其他目的地,例如使用curl。

答案 2 :(得分:0)

我发现了一种更简单的方法,可以将csv文件从datalab笔记本写入存储桶。

    %storage write --object "gs://pathtodata/data.csv" --variable data

此处'数据'是笔记本中的数据框!

答案 3 :(得分:0)

使用datalab中提供的ungit工具将您的文件提交到Google源存储库,然后使用gcloud命令将该存储库克隆到本地计算机上:

C:\\gcloud source repos clone datalab-notebooks --project=your-vm-instance-name

答案 4 :(得分:0)

如上所述,

!gsutil cp 'someotherfile.txt' sample_bucket_path

是我的工作。将文件从Datalab转到Google云端存储中。