#python #google-app-engine #bulkloader
#python #google-app-engine #bulkloader
Вопрос:
Я разрабатываю приложение в Google App Engine, используя текущий django non-rel и хранилище данных с высокой репликацией по умолчанию. В настоящее время я пытаюсь локально загрузить файл csv размером 180 МБ на экземпляр разработчика с помощью следующей команды:
appcfg.py upload_data --config_file=bulkloader.yaml --filename=../my_data.csv --kind=Place --num_threads=4 --url=http://localhost:8000/_ah/remote_api --rps_limit=500
bulkloader.yaml
python_preamble:
- import: base64
- import: re
- import: google.appengine.ext.bulkload.transform
- import: google.appengine.ext.bulkload.bulkloader_wizard
- import: google.appengine.ext.db
- import: google.appengine.api.datastore
- import: google.appengine.api.users
transformers:
- kind: Place
connector: csv
connector_options:
encoding: utf-8
columns: from_header
property_map:
- property: __key__
external_name: appengine_key
export_transform: transform.key_id_or_name_as_string
- property: name
external_name: name
Массовая загрузка фактически успешна для усеченной версии CSV на 1000 записей, но полный набор в конечном итоге зависает и начинает давать ошибки, «отступая» и ожидая все дольше и дольше. Журнал bulkloader, который я на самом деле отслеживаю, не показывает ничего полезного и либо выполняет stderr сервера.
Любая помощь в понимании этого процесса массовой загрузки будет оценена. В мои планы входит возможность в конечном итоге загружать большие наборы данных в хранилище данных Google, но это не обещает.
Ответ №1:
180 МБ — это слишком много данных для загрузки в dev_appserver — он не предназначен для больших (или даже средних) наборов данных; он полностью создан для мелкомасштабного локального тестирования. Лучше всего было бы уменьшить размер вашего тестового набора данных; если вы не можете этого сделать, попробуйте флаг --use_sqlite
командной строки, чтобы использовать новое локальное хранилище данных на основе sqlite, которое более масштабируемо.
Комментарии:
1. будьте готовы, он более масштабируемый, но с более чем несколькими открытыми проблемами
2. Спасибо. я только вчера понял это, прочитав, что локальное хранилище данных по умолчанию представляет собой простую карту памяти.