Читать большой набор данных в блокнот Jupyter и манипулировать

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

1015 просмотра

1 ответ

Я пытаюсь загрузить данные из BigQuery в Jupyter Notebook, где я буду делать некоторые манипуляции и черчение. Наборы данных - это 25 миллионов строк с 10 столбцами, что определенно превышает объем памяти моей машины (16 ГБ).

Я прочитал этот пост об использовании HDFStore , но проблема здесь в том, что мне все еще нужно прочитать данные в Jupyter Notebook, чтобы выполнить манипуляции.

Я использую Google Cloud Platform, поэтому вариант установки огромного кластера в Dataproc может быть вариантом, хотя это может быть дорогостоящим.

Кто-нибудь получает подобную проблему и имеет решение?

Автор: Frank Источник Размещён: 15.07.2019 08:11

Ответы (1)


1 плюс

Что касается продуктов в Google Cloud Platform, вы можете создать экземпляр Datalab для запуска своих ноутбуков и указать нужный тип компьютера с помощью --machine-typeфлага ( docs ). При необходимости вы можете использовать машину с большим объемом памяти.

Конечно, вы также можете использовать Dataproc, как вы уже предложили. Для упрощения настройки вы можете использовать предопределенное действие инициализации со следующим параметром при создании кластера:

--initialization-actions gs://dataproc-initialization-actions/datalab/datalab.sh 

редактировать

Поскольку вы используете экземпляр GCE, вы также можете использовать скрипт для автоматического выключения виртуальной машины, когда вы ее не используете. Вы можете редактировать ~/.bash_logoutтак, чтобы он проверял, является ли это последним сеансом, и, если это так, останавливает виртуальную машину

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изменить его в свой скрипт запуска.

Автор: Guillem Xercavins Размещён: 26.02.2018 03:52
Вопросы из категории :
32x32