Долгая (и неуспешная) массовая загрузка данных в хранилище данных Google App Engine - PullRequest
2 голосов
/ 04 октября 2011

Я занимаюсь разработкой приложения на Google App Engine, используя текущую версию django non-rel и хранилище данных с высокой репликацией по умолчанию.В настоящее время я пытаюсь выполнить массовую загрузку файла CSV 180 МБ локально в экземпляре dev с помощью следующей команды:

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 записями, но полный набор в конце концов останавливается и начинает выдавать ошибки, «отступая» и ожидая дольше и дольше.Журнал массового загрузчика, который я на самом деле отслеживаю, не показывает ничего полезного и делает также серверный stderr.

Любая помощь в понимании этого процесса массовой загрузки будет принята с благодарностью.Мои планы состоят в том, чтобы в конечном итоге загрузить большие наборы данных в хранилище данных Google, но это не обещает.

1 Ответ

2 голосов
/ 04 октября 2011

180 МБ - большой объем данных для загрузки в dev_appserver - он не предназначен для больших (или даже средних) наборов данных; Он построен исключительно для локального тестирования. Лучше всего было бы уменьшить размер вашего тестового набора данных; если вы не можете этого сделать, попробуйте флаг командной строки --use_sqlite, чтобы использовать новое локальное хранилище данных на основе sqlite, которое является более масштабируемым.

...