在 accumulo 中维护跨行的统计信息

Maintain statistics across rows in accumulo

我对 Accumulo 比较陌生,因此非常感谢能更好地做到这一点的一般提示。

我有一个由时间部分和地理部分组成的 rowId。我想在某种迭代器中维护统计数据(计数、总和等),但想在摄取过程中向其他行发出突变。换句话说,当我插入一行时:

<timeA>_<geoX> colFam:colQual value

除了上面的突变之外,我想在同一个table(或不同的一个)中的不同行中维护统计信息,如下所示:

timeA_countRow colFam:colQual count++
geoX_countRow colFam:colQUal count++
timeA_sumRow colFam:colQUal sum += value
geoX_sumRow colFam:colQual sum += value

完成这样的事情最好的方法是什么?我肯定见过统计组合器,但据我所知,它在一行内工作。我想根据部分密钥维护统计信息...

谢谢!

In addition to the mutation above, I'd like to maintain stats in separate rows in the same table (or a different one) as follows

这根本不适用于 Accumulo。在迭代器的范围内,您无法知道单独行中的数据。这就是为什么 StatsCombiner 是在单行的上下文中编写的。不保证任何其他行都包含在 Tablet(物理数据边界)中。

一种常见的方法是通过单独的 table 或带有 SummingCombiner 的位置组在客户端维护此信息。当您为特定列插入更新时,您还提交了对统计信息的更新 table。

您还可以查看 Fluo,它允许您执行跨行事务。这是与普通 Accumulo 不同的野兽,仍处于测试阶段。