1

我希望能够使用 Map-reduce 处理按日期时间属性或任何非键属性排序的查询的模型实体。

看起来 map reduce 的关键因素是能够均匀地分割范围,并缩小到最小范围“空间”(即,不是基于实体的数量,而是基于范围内可能的实体数量)。内置范围是一个键范围,GAE 将其设计为均匀分布,并且每个键限制为 1 个。

看起来在任何其他属性上创建范围迭代器也有两个可能的问题:(1)均匀分布;(2) 任意给定值的实体数量。以问题 (2) 为例,一个日期时间值可能有多个实体。这似乎产生了确定用于拆分范围的批量大小的问题。

我的问题是:是否有一个实用的解决方案来创建一个 map reduce 模型迭代器,其范围迭代器不基于模型键,并且可能既不是均匀分布也不是任何范围的可预测实体计数?

4

1 回答 1

0

Mapreduce 将尝试尽可能地拆分输入。在不等式查询 IE 的情况下:在时间戳 X 和 Y 之间。它将平均分割属性范围(例如时间戳)。因此,如果时间戳的值分布不佳,这将导致某些分片获得比其他分片更多的实体。过采样的事实在一定程度上缓解了这种情况。(IE:每个分片接收多个不相邻的范围)对于相等查询(IE:Foo=Bar 和 Baz=Bat)它做得更好。它使用“__scatter__”属性,这是一个随机应用于每 512 个实体中的 1 个的值。它对这些进行查询以通过键空间获取实体分布的样本,然后相应地对键空间进行分区。这显然不能提供精确的分区,

于 2014-07-17T00:38:55.347 回答