在accumulo中维护各行的统计数据

时间:2016-03-28 18:07:04

标签: accumulo

我对Accumulo来说相对较新,所以非常欣赏这样做的一般提示。

我有一个由时间组件和地理组件组成的rowIds。我希望在某种迭代器中维护统计数据(计数,总和等),但是想要将其作为突发的一部分发送到其他行。换句话说,当我插入一行时:

<timeA>_<geoX> colFam:colQual value

除了上面的变异之外,我还想将统计数据保存在同一个表(或不同的表)中的不同行中,如下所示:

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

完成这样的事情的最佳方法是什么?我肯定已经看过统计数据合并器了,但是根据我的理解,它在一行中起作用。我想根据密钥的某些部分维护统计数据......

谢谢!

1 个答案:

答案 0 :(得分:1)

  

除了上面的变异之外,我还想将统计数据保存在同一个表(或不同的表)中的不同行中,如下所示

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

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

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