我正在尝试将数据从BigQuery加载到Jupyter Notebook,在那里我将进行一些操作和绘图。数据集是25百万行,有10列,绝对超过了我机器的内存容量(16 GB)。
我已经阅读了关于 using HDFStore的这篇文章,但问题是我仍然需要将数据读取到Jupyter Notebook来进行操作。
我正在使用Google Cloud Platform,因此在Dataproc中设置一个庞大的群集可能是一种选择,但这可能会很昂贵。
任何人都有类似的问题并有解决方案吗?
答案 0 :(得分:1)
关于Google Cloud Platform中的产品,您可以创建一个Datalab实例来运行笔记本,并使用--machine-type
标记(machine type)指定所需的docs。如果需要,您可以使用高内存机器。
当然,您也可以像您已经提出的那样使用Dataproc。为了便于设置,您可以在创建群集时使用带有以下参数的预定义initialization action:
--initialization-actions gs://dataproc-initialization-actions/datalab/datalab.sh
修改强>
在使用GCE实例时,您还可以使用脚本在不使用VM时自动关闭VM。您可以编辑~/.bash_logout
,以便检查它是否是最后一个会话,如果是,则停止VM
if [ $(who|wc -l) == 1 ];
then
gcloud compute instances stop $(hostname) --zone $(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/zone 2>\dev\null | cut -d/ -f4) --quiet
fi
或者,如果您更喜欢curl
方法:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" https://www.googleapis.com/compute/v1/projects/$(gcloud config get-value project 2>\dev\null)/zones/$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/zone 2>\dev\null | cut -d/ -f4)/instances/$(hostname)/stop -d ""
请注意,您可能需要更新Cloud SDK组件才能使gcloud
命令生效。使用:
gcloud components update
或
sudo apt-get update && sudo apt-get --only-upgrade install kubectl google-cloud-sdk google-cloud-sdk-datastore-emulator google-cloud-sdk-pubsub-emulator google-cloud-sdk-app-engine-go google-cloud-sdk-app-engine-java google-cloud-sdk-app-engine-python google-cloud-sdk-cbt google-cloud-sdk-bigtable-emulator google-cloud-sdk-datalab -y
您可以在启动脚本中包含其中一个和~/.bash_logout
编辑。