在appengine上,如何将实体放入reducer中?

时间:2012-02-05 22:09:02

标签: google-app-engine mapreduce

我正在使用:

http://code.google.com/p/appengine-mapreduce/

从演示应用程序开始。

我应该如何将实体写入数据存储区?产生放置操作?输出编写器类型应该是什么?

1 个答案:

答案 0 :(得分:0)

是的,我用这样的put操作使用yield:

def makethumbnails(entity):
    if entity.small:
        try:
            entity.thumb = images.resize(entity.small, 80, 100)
        except Exception, e:
            pass
    yield op.db.Put(entity)

在我的mapreduce.yaml中,相应的元素是

- name: makethumbnails
  mapper:
    input_reader: mapreduce.input_readers.DatastoreInputReader
    handler: main.makethumbnails
    params:
    - name: entity_kind
      default: main.Image

这是一个对我有用的组合,或者如果您只想为大量实体更新变量:

def seturl(entity):
    if entity.url:
        if entity.url.find('mydomainname') > 1:
            try:
                entity.url = 'www.mydomainname.com'
                yield op.db.Put(entity)
            except Exception, e:
                logging.debug('There occurred exception:%s' % str(e))

我可以使用上述操作在一个作业中处理15000个实体。