2

我正在使用当前的 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

对于 CSV 的截断的 1000 条记录版本,批量加载实际上是成功的,但整个集最终陷入困境并开始出错,“退出”并等待越来越长的时间。我实际跟踪的bulkloader-log 没有显示任何有用的信息,服务器的stderr 也没有。

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

4

1 回答 1

2

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

于 2011-10-04T03:31:38.403 回答