我的应用程序使用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) 我正在使用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,看看我是否可以获得更多的吞吐量.
我正在做一些应该很简单并且一次又一次地陷入困境的事情.将非常简单的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) 似乎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) 我正在使用以下内容下载我的其中一种实例:
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引擎组上的这篇文章说我需要创建一个索引.但是,添加更多索引会减慢对我的实体的写入速度 - 我宁愿不这样做,因为我将更频繁地编写实体,而不是进行批量数据下载.
谢谢.
我正在使用BulkLoader将MovieClips和Bitmaps加载到我的AS3应用程序中.位图很容易克隆,但我有一些复杂的MovieClip的问题,它有许多子,按钮,符号等.
我发现很多方法可以将MovieClip克隆为Bitmaps,但是有没有办法将它克隆为MovieClip,它的所有属性?
我想上传一个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) 您好我已经在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的webapp数据存储区的最佳方法.从我一直在做的阅读看来,我可以通过两种不同的方式来做到这一点.我可以通过调用appcfg.py来使用GAE的bulkloader upload_data --application = --kind = --filename =或者我可以进入我的webapp的数据存储管理部分,选择我要备份的实体,然后单击"备份"实体"按钮.除非我弄错了,"备份实体"按钮将在blobstore中创建我的数据存储的备份,而使用appcfg.py的download_data将创建本地备份.备份将每周/每月进行,主要原因是万一webapp的管理员意外删除了重要数据.我并不担心Google会丢失数据,所以在审核我的问题时不应该考虑这一点.
所以我的问题是:这两种方法中哪一种是首选方法?哪个更快,更有效,更便宜等?
在此先感谢您的意见/帮助/解答.