对Google App Engine datastore的大量数据加载时间过长(且失败)
我正在使用当前的django non-rel和默认的高复制数据存储,在Google App Engine上开发一个应用程序。现在我想在本地的开发实例上批量加载一个180MB的csv文件,使用以下命令:
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日志并没有提供任何有用的信息,服务器的错误输出也没有。
如果能帮我理解这个批量加载的过程,我将非常感激。我计划最终能够将大数据集加载到Google数据存储中,但现在的情况看起来不太乐观。
1 个回答
2
180MB的数据量对于dev_appserver来说是很多的,它并不是为了处理大数据(甚至中等大小的数据)而设计的;它主要是为了小规模的本地测试而建的。最好的办法是减少你的测试数据集的大小;如果你无法做到这一点,可以试试 --use_sqlite
这个命令行选项,它可以让你使用新的基于sqlite的本地数据存储,这样会更适合处理大数据。