4

我正在尝试仅处理特定日期之后发生的事件。为了实现这一点,我尝试使用大于运算符传递过滤器参数(mapper_params)。但是我收到以下错误:“仅支持相等过滤器”。

这是我的运行方法的样子:

 def run(self, action, occurred_after):
    output = yield mapreduce_pipeline.MapreducePipeline(
                "word_count",
                "main.word_count_map",
                "main.word_count_reduce",
                "mapreduce.input_readers.DatastoreInputReader",
                "mapreduce.output_writers.FileOutputWriter",
                mapper_params={
                    "entity_kind": 'models.Event',
                    "filters": [("action", "=", action),
                    ("occurred_on", ">", occurred_after )]
                },
                reducer_params={
                    "filesystem": "gs",
                    "gs_bucket_name": "mybucket/mapreduce_output",
                    "mime_type": "text/plain",
                    "output_sharding": "input"
                },
                shards=1)

有谁知道为什么只支持“=”运算符?

4

1 回答 1

1

MapReduce 在内部使用实体的 KEY 上的不等式过滤器将数据库拆分为小块实体。

首先,它查询仅存在于一小部分实体上的秘密属性(平均每 128 个实体一次 - 0.78% 的机会),然后查询 2 个连续实体之间的实体(实体 x 和实体 x+128 之间),然后运行您对该列表中每个实体的映射器函数(对于每个 x, x+128 组它创建一个任务)

于 2015-05-25T12:30:28.867 回答