我在Google App Engine中有一个模型,它有50,000+实体。我想创建一个mapreduce或其他操作来迭代所有50,000+实体,并将模型上方法的结果导出到一个文本文件中。完成后,我想下载文本文件。
在Google App Engine中,最简单的方法是什么?我只需要遍历所有实体,并将expert_data()的结果写出到一个公共文件中。
#Example model
class Car(db.Model):
color = db.StringProperty()
def export_data(self):
return self.color发布于 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
发布于 2012-05-24 00:02:30
我发现使用远程api来做这类事情是最容易的,否则你将不得不将数据存储在blobstore中,然后在完成后导出它。
远程api不如在appengine上运行它快,但它肯定要容易得多。
发布于 2012-06-01 07:17:32
我会用一种不同的方式来做这件事--如果这里有什么弱点,请告诉我。
我将使用任务队列和游标。对前1000个结果执行查询,使用实验性的blobstore编程写入API将数据输出到blobstore文件。然后,使用游标重新调度self,并在每次后续迭代中将其附加到文件中,并在游标处选取查询,直到完成为止。
这可能会很慢--但它不会对一个正在运行的应用程序产生明显的影响,而且与mapreduce不同的是,它不会产生大量的实例,而且可能会花费你的实际成本。它甚至可能不会产生单个额外实例。
https://stackoverflow.com/questions/10723083
复制相似问题