将大数据集读取到Jupyter Notebook和Manipulate

时间:2018-02-14 19:54:55

标签: python-3.x google-bigquery out-of-memory jupyter-notebook google-cloud-dataproc

我正在尝试将数据从BigQuery加载到Jupyter Notebook,在那里我将进行一些操作和绘图。数据集是25百万行,有10列,绝对超过了我机器的内存容量(16 GB)。

我已经阅读了关于 using HDFStore的这篇文章,但问题是我仍然需要将数据读取到Jupyter Notebook来进行操作。

我正在使用Google Cloud Platform,因此在Dataproc中设置一个庞大的群集可能是一种选择,但这可能会很昂贵。

任何人都有类似的问题并有解决方案吗?

1 个答案:

答案 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编辑。