gpt4 book ai didi

java - 在 Appengine 上使用 MapReduce 的动态查询语言

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:34 26 4
gpt4 key购买 nike

我们目前有一个包含数百万个实体的应用引擎应用程序 (java)。我们使用 map reduce 框架 + cron 来为仪表板等提供动力,进行大量报告。

但是,我们希望能够对整个数据集运行即席查询。我们现在这样做的方式是编写 mapreduce、部署、运行 mapreduce,然后查看结果。我们不想执行部署步骤。也就是说,只需转到某个管理界面,指定我们的查询和一些自定义代码来进行后处理,然后查看结果。如果我们不必每次都进行部署,我们会做更多的即席查询。

有没有人做过这样的事情?你学到了什么?有什么好的策略吗?

最佳答案

这是一个 Python 示例,但我很确定您可以使用 Java 执行相同的操作。如果您只想通过过滤器对实体进行计数,这是一种解决方案。您可以创建一个映射器来处理来自 mapreduce.yaml 的过滤器

- name: Query on Actors
mapper:
handler: mapper_api.query_process
input_reader: google.appengine.ext.mapreduce.input_readers.DatastoreInputReader
params:
- name: entity_kind
value: common.models.Actor

- name: filters
value: age<27, name=toto

然后在您的 mapper_api.py 中,您必须展开并处理每个过滤器:

def query_process(entity):
ctx = context.get()
pms = ctx.mapreduce_spec.mapper.params

filters = pms['filters']

if match(entity, filters):
yield op.counters.Increment("matched")

所以现在在您的/mapreduce 中您可以选择映射器 Actors 查询 并将一些过滤器传递给它。

关于java - 在 Appengine 上使用 MapReduce 的动态查询语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9474109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com