如何快速从 Google Cloud Datalab 笔记本中获取数据?
How do I quickly get data out of a Google Cloud Datalab notebook?
我只想快速从 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()
你说的是多少数据?我假设这不是 BigQuery Table,因为我们有 APIs。
对于存储 APIs,将存储桶想象成一个文件夹。您需要在存储桶中创建一个项目。如果将数据作为字符串分配给 Python 变量,则可以使用项目 (write_to) 上的 API。
如果您像使用 output.csv 一样写入文件,该文件位于 Datalab 运行 所在的 Docker 容器中。这意味着它是暂时的并且会消失当容器关闭时。但是,在此期间它是可以访问的,您可以使用 %%bash 单元魔法将其发送到其他目的地,例如使用 curl.
至少有2个选项:
从 Datalab 本地下载文件
此选项在当前的 Datalab 代码中似乎不可用。我已经为 Datalab 提交了 pull request,这可能会解决您的问题。此修复允许用户使用 Datalab 界面 edit/download 不是笔记本 (*.ipynb) 的文件。我能够使用拉取请求中的修改从 Datalab download/edit 文本文件。
将文件发送到 Google 云中的存储桶
以下 link 可能有助于编写代码以使用存储 API.
将文件传输到 Google 云中的存储桶
这是一个工作示例:
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 云
中的存储桶中查看项目
我找到了一种更简单的方法来将 csv 文件从数据实验室笔记本写入存储桶。
%storage write --object "gs://pathtodata/data.csv" --variable data
这里 'data' 是您笔记本中的数据框!
使用 datalab 中可用的 ungit 工具将文件提交到 Google 源存储库,然后使用 gcloud 命令将该存储库克隆到本地机器上:
C:\gcloud source repos clone datalab-notebooks --project=your-vm-instance-name
正如上面有人发布的那样:
!gsutil cp 'someotherfile.txt' sample_bucket_path
帮了我大忙。将文件从 Datalab 获取到 Google 云存储。
我只想快速从 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()
你说的是多少数据?我假设这不是 BigQuery Table,因为我们有 APIs。
对于存储 APIs,将存储桶想象成一个文件夹。您需要在存储桶中创建一个项目。如果将数据作为字符串分配给 Python 变量,则可以使用项目 (write_to) 上的 API。
如果您像使用 output.csv 一样写入文件,该文件位于 Datalab 运行 所在的 Docker 容器中。这意味着它是暂时的并且会消失当容器关闭时。但是,在此期间它是可以访问的,您可以使用 %%bash 单元魔法将其发送到其他目的地,例如使用 curl.
至少有2个选项:
从 Datalab 本地下载文件
此选项在当前的 Datalab 代码中似乎不可用。我已经为 Datalab 提交了 pull request,这可能会解决您的问题。此修复允许用户使用 Datalab 界面 edit/download 不是笔记本 (*.ipynb) 的文件。我能够使用拉取请求中的修改从 Datalab download/edit 文本文件。
将文件发送到 Google 云中的存储桶
以下 link 可能有助于编写代码以使用存储 API.
将文件传输到 Google 云中的存储桶这是一个工作示例:
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 云
中的存储桶中查看项目我找到了一种更简单的方法来将 csv 文件从数据实验室笔记本写入存储桶。
%storage write --object "gs://pathtodata/data.csv" --variable data
这里 'data' 是您笔记本中的数据框!
使用 datalab 中可用的 ungit 工具将文件提交到 Google 源存储库,然后使用 gcloud 命令将该存储库克隆到本地机器上:
C:\gcloud source repos clone datalab-notebooks --project=your-vm-instance-name
正如上面有人发布的那样:
!gsutil cp 'someotherfile.txt' sample_bucket_path
帮了我大忙。将文件从 Datalab 获取到 Google 云存储。