如何在GAE Python中从cron启动MapReduce任务

5 投票
2 回答
1058 浏览
提问于 2025-04-16 18:54

我在mapreduce.yaml文件中定义了一个mapreduce任务:

mapreduce:
- name: JobName 
  mapper:
    input_reader: google.appengine.ext.mapreduce.input_readers.DatastoreInputReader
    handler: handler_name
    params:
    - name: entity_kind
      default: KindName

我该如何通过定时任务(cron)来启动它呢?有没有什么网址可以直接运行这个任务?

2 个回答

-6

是的,如果你查看一下入门指南页面,你会看到需要在你的app.yaml文件中设置网址:

handlers:
- url: /mapreduce(/.*)?
  script: mapreduce/main.py
  login: admin

然后你可以像平常一样在App Engine中设置定时任务,这个例子中你需要写一个cron.yaml文件,内容如下:

cron:
- description: daily summary job
  url: /mapreduce
  schedule: every 24 hours
10

你可以通过任何类型的AppEngine处理程序来启动一个mapreduce任务,使用的是control.py这个文件。

from mapreduce import control

mapreduce_id = control.start_map(
    "My Mapper",
    "main.my_mapper",
    "mapreduce.input_readers.DatastoreInputReader",
    {"entity_kind": "models.MyEntity"},
    shard_count=10)

撰写回答