我正在尝试仅处理特定日期之后发生的事件。为了达到这个目的,我尝试使用大于运算符传递过滤器 param(mapper_params)。但是我收到以下错误:“仅支持相等过滤器”。
以下是我的run方法的样子:
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)
有谁知道为什么只支持“=”运算符?
答案 0 :(得分:1)
MapReduce在内部使用实体KEY上的不等式过滤器将数据库拆分为小块实体。
首先它查询secret property只存在于一小部分实体上(平均每128个偶然一次 - 0.78%几率),然后查询两个连续实体之间的实体(实体x和实体x之间) +128),然后在该列表中的每个实体上运行您的映射器函数(对于每个x,x + 128组,它创建一个任务)