2011-10-04 70 views
2

我正在使用当前的django non-rel和现在默认的高复制数据存储区在Google App Engine上开发应用程序。我目前正试图以散装的一个开发实例本地加载一个180MB的CSV文件使用以下命令:将长批量数据加载到Google App Engine数据存储区

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 

大容量加载是一个截断实际上成功,1000个CSV格式的记录版本,但整套设备最终陷入困境,开始出现错误,“退避”,等待时间越来越长。我实际上尾随的bulkloader-log没有透露任何有用的信息,也没有显示服务器的stderr。

任何帮助理解这个批量加载过程,将不胜感激。我的计划是最终能够将大数据集加载到谷歌数据存储中,但这并不乐观。

回答

2

180MB是要加载到dev_appserver中的大量数据 - 它不是为大型(甚至中等)数据集设计的;它完全用于小规模的本地测试。您最好的选择是减少测试数据集的大小。如果您不能这样做,请尝试使用--use_sqlite命令行标志来使用更具可扩展性的新的基于sqlite的本地数据存储。

+0

准备好了,它更具可扩展性,但有多个未解决的问题 – systempuntoout

+0

谢谢。昨天我发现默认的本地数据存储是一个简单的内存映射,我昨天才明白这一点。 – scottzer0

相关问题