首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Google App Engine中迭代超过20,000个实体并导出到文本文件的最简单方法是什么?

在Google App Engine中迭代超过20,000个实体并导出到文本文件的最简单方法是什么?
EN

Stack Overflow用户
提问于 2012-05-23 23:24:46
回答 5查看 260关注 0票数 1

我在Google App Engine中有一个模型,它有50,000+实体。我想创建一个mapreduce或其他操作来迭代所有50,000+实体,并将模型上方法的结果导出到一个文本文件中。完成后,我想下载文本文件。

在Google App Engine中,最简单的方法是什么?我只需要遍历所有实体,并将expert_data()的结果写出到一个公共文件中。

代码语言:javascript
运行
复制
#Example model
class Car(db.Model):
    color = db.StringProperty()

    def export_data(self):
        return self.color
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-24 00:20:33

使用mapreduce API:https://developers.google.com/appengine/docs/python/dataprocessing/。它还有一个BlobstoreOutputWriter,您可以使用它来创建一个blob,然后下载该blob。

根据戴夫的建议,下面是一个示例:http://code.google.com/p/appengine-mapreduce/source/browse/trunk/python/demo/main.py#264

票数 4
EN

Stack Overflow用户

发布于 2012-05-24 00:02:30

我发现使用远程api来做这类事情是最容易的,否则你将不得不将数据存储在blobstore中,然后在完成后导出它。

远程api不如在appengine上运行它快,但它肯定要容易得多。

票数 2
EN

Stack Overflow用户

发布于 2012-06-01 07:17:32

我会用一种不同的方式来做这件事--如果这里有什么弱点,请告诉我。

我将使用任务队列和游标。对前1000个结果执行查询,使用实验性的blobstore编程写入API将数据输出到blobstore文件。然后,使用游标重新调度self,并在每次后续迭代中将其附加到文件中,并在游标处选取查询,直到完成为止。

这可能会很慢--但它不会对一个正在运行的应用程序产生明显的影响,而且与mapreduce不同的是,它不会产生大量的实例,而且可能会花费你的实际成本。它甚至可能不会产生单个额外实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10723083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档