标签: bulkloader

使用yaml自动生成配置和具有数字ID的实体时出现Google App Engine批量加载程序问题

我的应用程序使用Django非rel.我无法访问模型.

我的bulkloader.yaml文件是自动生成的appcfg.py create_bulkloader_config.

问题是实体数字ID被导入为字符串键名.因此,如果我导出具有int ID的实体,例如'62',它将作为实体导入,其字符串键名为'61',这会搞砸Django.

Revelant bulkloader.yaml片段:

 property_map:
  - property: __key__
    external_name: key
    export_transform: transform.key_id_or_name_as_string
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用bulkloader设置下载/上传od数据,我希望数据具有易于理解的格式(如.csv)---因此使用bulkloader.py --dump (...)不是一个可行的选项,因为它给了我带有实体内容的sqlite3文件腌成一排.

编辑

我尝试做@Nick建议的事情,我得到了一个例外:

 ErrorOnTransform: Numeric keys are not supported on input at this time.
Run Code Online (Sandbox Code Playgroud)

这是否意味着我必须坚持bulkloader.py(使用那个werid sqlite格式)或者我搞砸了什么?;)

变压器的标题:

- kind: auth_user
    connector: csv
    connector_options:
      encoding: utf-8
      skip_import_header_row: True
      print_export_header_row: True

    property_map:
      - property: __key__
        external_name: key
        export_transform: transform.key_id_or_name_as_string
        import_transform: transform.create_foreign_key('auth_user', key_is_id=True) 
Run Code Online (Sandbox Code Playgroud)

整个Stacktrace:

      Traceback (most recent call last):
      File "/opt/google/appengine/google/appengine/tools/adaptive_thread_pool.py", line 150, in …
Run Code Online (Sandbox Code Playgroud)

python django google-app-engine django-nonrel bulkloader

5
推荐指数
1
解决办法
1690
查看次数

App Engine批量装载机性能

我正在使用App Engine批量加载器(Python运行时)将实体批量上传到数据存储.我上传的数据以专有格式存储,所以我已经通过自己的连接器(注册它bulkload_config.py)实现,将其转换为中间python字典.

import google.appengine.ext.bulkload import connector_interface
class MyCustomConnector(connector_interface.ConnectorInterface):
   ....
   #Overridden method
   def generate_import_record(self, filename, bulkload_state=None):
      ....
      yeild my_custom_dict
Run Code Online (Sandbox Code Playgroud)

要将此中性python字典转换为数据存储区实体,我使用我在YAML中定义的自定义帖子导入功能.

def feature_post_import(input_dict, entity_instance, bulkload_state):
    ....
    return [all_entities_to_put]
Run Code Online (Sandbox Code Playgroud)

注意:我没有entity_instance, bulkload_state在我的feature_post_import功能中使用.我只是创建新的数据存储实体(基于我input_dict),并返回它们.

现在,一切都很好.但是,批量加载数据的过程似乎需要花费太多时间.例如,GB(~1,000,000个实体)的数据需要大约20个小时.如何提高批量加载过程的性能.我错过了什么吗?

我与appcfg.py一起使用的一些参数是(每个线程批量大小为10个实体的10个线程).

链接了Google App Engine Python小组帖子:http://groups.google.com/group/google-appengine-python/browse_thread/thread/4c8def071a86c840

更新:为了测试批量加载过程的性能,我加载entities了"测试" Kind.虽然这entity很简单FloatProperty,但仍然需要花费相同的时间来批量加载它们entities.

我仍然会尝试改变批量加载器参数rps_limit,bandwidth_limit并且http_limit,看看我是否可以获得更多的吞吐量.

python performance google-app-engine bulk-load bulkloader

5
推荐指数
1
解决办法
1004
查看次数

使用开发服务器的Appengine BulkLoader问题

我正在做一些应该很简单并且一次又一次地陷入困境的事情.将非常简单的csv文件上传到我的开发服务器时出现此错误:

Error in WorkerThread-0: app "dev~fbdec" cannot access app "fbdec"'s data
Run Code Online (Sandbox Code Playgroud)

确切的输出是:

[INFO    ] Logging to bulkloader-log-20110815.142554
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
[INFO    ] Opening database: bulkloader-progress-20110815.142554.sql3
Please enter login credentials for localhost
Email: a@a.com
Password for a@a.com: 
[INFO    ] Connecting to localhost:8080/remote_api
[INFO    ] Skipping header line.
[INFO    ] Starting import; maximum 10 entities per post
[ERROR   ] [WorkerThread-0] WorkerThread: …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine bulkloader

5
推荐指数
1
解决办法
1753
查看次数

GAE:超过最大分配ID

似乎gae为模型分配了非常高的ID.当我下载我的实体时,我得到一些条目非常大的数字.这些都是首先自动生成的.将它们下载为csv是没有问题的.但删除现有数据并重新上传相同数据会引发异常.

Exceeded maximum allocated IDs

跟踪:

Traceback (most recent call last):
  File "/opt/eclipse/plugins/org.python.pydev_2.7.5.2013052819/pysrc/pydevd.py", line 1397, in <module>
    debugger.run(setup['file'], None, None)
  File "/opt/eclipse/plugins/org.python.pydev_2.7.5.2013052819/pysrc/pydevd.py", line 1090, in run
    pydev_imports.execfile(file, globals, locals) #execute the script
  File "/home/kave/workspace/google_appengine/appcfg.py", line 171, in <module>
    run_file(__file__, globals())
  File "/home/kave/workspace/google_appengine/appcfg.py", line 167, in run_file
    execfile(script_path, globals_)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 4247, in <module>
    main(sys.argv)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 4238, in main
    result = AppCfgApp(argv).Run()
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 2396, in Run
    self.action(self)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 3973, in __call__
    return method()
  File …
Run Code Online (Sandbox Code Playgroud)

google-app-engine bulkloader google-cloud-datastore

5
推荐指数
1
解决办法
316
查看次数

App引擎批量加载程序下载警告"__key__没有降序索引,执行串行下载"

我正在使用以下内容下载我的其中一种实例:

appcfg.py download_data --config_file=bulkloader.yaml --kind=ModelName --filename=ModelName.csv --url=http://appid.appspot.com/remote_api
Run Code Online (Sandbox Code Playgroud)

如果类型的实例多于批量大小,那么我会收到此警告:

No descending index on __key__, performing serial download
Run Code Online (Sandbox Code Playgroud)

我没有任何自定义索引,也没有禁用索引的任何属性.

我是否'需要'做某事来解决这个警告,或者它只是一个我可以放心忽略的警告?它会影响下载的速度吗?

关于bulkloader的这篇文章在示例输出中包含警告消息,但没有提及它.

app引擎组上的这篇文章说我需要创建一个索引.但是,添加更多索引会减慢对我的实体的写入速度 - 我宁愿不这样做,因为我将更频繁地编写实体,而不是进行批量数据下载.

谢谢.

google-app-engine bulkloader

4
推荐指数
1
解决办法
948
查看次数

在ActionScript3中克隆movieclip


我正在使用BulkLoader将MovieClips和Bitmaps加载到我的AS3应用程序中.位图很容易克隆,但我有一些复杂的MovieClip的问题,它有许多子,按钮,符号等.
我发现很多方法可以将MovieClip克隆为Bitmaps,但是有没有办法将它克隆为MovieClip,它的所有属性?

flash clone actionscript-3 bulkloader

4
推荐指数
1
解决办法
4452
查看次数

Google App Engine Bulkloader"意外线程死亡"

我想上传一个moderetly大小的csv文件使用bulkloader功能,谷歌应用程序引擎,它似乎通过与下面的结果死了一些方法:

[INFO    ] Logging to bulkloader-log-20110328.181531
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
[INFO    ] Opening database: bulkloader-progress-20110328.181531.sql3
[INFO    ] Connecting to notmyrealappname.appspot.com/_ah/remote_api
[INFO    ] Starting import; maximum 10 entities per post
...............................................................[INFO    ] Unexpected thread death: WorkerThread-7
[INFO    ] An error occurred. Shutting down...
.........[ERROR   ] Error in WorkerThread-7: <urlopen error [Errno -2] Name or service not known>

[INFO    ] 1740 entites …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine bulkloader

2
推荐指数
1
解决办法
583
查看次数

使用批量加载程序上传数据时出现BadRequestError

您好我已经在Google应用引擎中创建了示例问候应用.

现在我正在尝试使用批量加载器上传数据.

但它给出了BadRequestError.This代码:

D:\Study\M.Tech\Summer\Research\My Work\Query Transformation\Experiment\Tools\Bu
lkloader\bulkloader test>appcfg.py create_bulkloader_config --url=http://bulkex.
appspot.com/remote_api --application=bulkex --filename=config.yml

Creating bulkloader configuration.
[INFO    ] Logging to bulkloader-log-20111008.175810
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
[INFO    ] Opening database: bulkloader-progress-20111008.175810.sql3
[INFO    ] Opening database: bulkloader-results-20111008.175810.sql3
[INFO    ] Connecting to bulkex.appspot.com/remote_api
Please enter login credentials for bulkex.appspot.com
Email: shyam.rk22@gmail.com
Password for shyam.rk22@gmail.com:
[INFO    ] Downloading kinds: ['__Stat_PropertyType_PropertyName_Kind__']
[ERROR   ] [WorkerThread-3] WorkerThread: …
Run Code Online (Sandbox Code Playgroud)

google-app-engine bulkloader

1
推荐指数
1
解决办法
991
查看次数

Google App Engine Bulkloader appcfg.py download_data与数据存储区备份实体按钮

我目前正在寻找备份Google App Engine的webapp数据存储区的最佳方法.从我一直在做的阅读看来,我可以通过两种不同的方式来做到这一点.我可以通过调用appcfg.py来使用GAE的bulkloader upload_data --application = --kind = --filename =或者我可以进入我的webapp的数据存储管理部分,选择我要备份的实体,然后单击"备份"实体"按钮.除非我弄错了,"备份实体"按钮将在blobstore中创建我的数据存储的备份,而使用appcfg.py的download_data将创建本地备份.备份将每周/每月进行,主要原因是万一webapp的管理员意外删除了重要数据.我并不担心Google会丢失数据,所以在审核我的问题时不应该考虑这一点.

所以我的问题是:这两种方法中哪一种是首选方法?哪个更快,更有效,更便宜等?

在此先感谢您的意见/帮助/解答.

python backup google-app-engine database-backups bulkloader

1
推荐指数
1
解决办法
1204
查看次数