Лучший способ получить данные CSV в App Engine, когда массовая загрузка занимает слишком много времени / генерирует ошибки?

У меня есть CSV-файл размером 10 МБ с данными геолокации, который я вчера пытался загрузить в свое хранилище данных App Engine. Я выполнил инструкции в этом сообщении в блоге и использовал инструмент bulkloader / appcfg. Хранилище данных показало, что записи были загружены, но это заняло несколько часов и израсходовал всю мою дневную квоту на ЦП. Ближе к концу процесс прервался из-за ошибок, прежде чем я действительно превысил свою квоту. Но само собой разумеется, что для 10 МБ данных не потребуется столько времени и энергии.

Итак, есть ли другой способ получить эти данные CSV в моем хранилище данных App Engine (для приложения Java).

Я видел сообщение Икаи Лана об использовании инструмента картографирования, который он создал для этой цели, но он выглядит довольно сложным.

Вместо этого, как насчет загрузки CSV в Документы Google - есть ли способ передать его оттуда в хранилище данных App Engine?


person Brad    schedule 22.04.2011    source источник
comment
Кажется маловероятным, что CSV-файл размером 10 МБ займет все 6,5 часов процессора. Можете ли вы включить определение массового загрузчика? Кроме того, когда вы говорите, что «отказал в ошибках», важно указать какие ошибки - желательно с исходной трассировкой стека.   -  person Nick Johnson    schedule 24.04.2011


Ответы (2)


Я ежедневно загружаю 100000 записей (20 мегабайт) через загрузчик. Настройки, с которыми я играл: - Конфигурация bulkloader.yaml: настроена на автоматическое создание ключей. - включить строку заголовка в необработанный файл csv. - параметры скорости установлены на максимум (не уверен, уменьшит ли уменьшение потребляемый процессор)

Эти настройки прожигают мои 6,5 часов бесплатной квоты примерно за 4 минуты, но при этом загружаются данные (возможно, из создаваемых индексов).

appcfg.py upload_data --config_file=bulkloader.yaml  --url=http://yourapp.appspot.com/remote_api --filename=data.csv --kind=yourtablename --bandwidth_limit=999999 --rps_limit=100 --batch_size=50 --http_limit=15

(Я автоматически создаю эту строку с помощью сценария и использую Autohotkey для отправки своих учетных данных).

person jonincanada    schedule 03.05.2011

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

http://code.google.com/p/bulkloader-gdata-connector/source/browse/gdata_connector.py

Однако вы могли бы взглянуть на источник, чтобы увидеть, как я извлекаю данные из gdocs и создаю задачи, которые это делают, вместо того, чтобы проходить через массовый загрузчик.

Также вы можете загрузить свой документ в хранилище больших двоичных объектов и аналогичным образом создать задачу, которая считывает данные CSV из хранилища больших двоичных объектов и создает сущности. (Думаю, это будет проще и быстрее, чем работать с фидами gdata)

person Calvin    schedule 22.04.2011