我想知道是否可以对存储在多行中的值进行聚合操作。例如,我有下表
rowID colFam colQual value
00000 0000 A 12
00000 0001 B Test
00001 0000 A 35
00001 0001 B Foo
00002 0000 A 7
00002 0001 B Bar
我要做的是找到用columnqualifierA存储的所有值的平均值A的平均值。是否可以使用Accumulo的迭代器,过滤器或组合器?
我看到了statscombiner,但是该组合仪在不同版本(RowID,Colfam和Colqual是相同的,但时间戳是不同的(,而不是在不同的键上执行聚合。
组合器(及其前身,聚合器(对同一键进行聚合。您可以创建一个迭代器,该迭代器将多个键转换为单个密钥,但是您仍然必须在客户端中汇总,因为您将为每个平板电脑生成大量的部分计算。
您可以使用Apache Fluo的"观察者"在摄入桌子时保持汇总统计信息。
可能有多种解决方案。我建议看看Apache Fluo,如果您真的不想使用它,请考虑将部分总和/计数作为每个平板电脑中的迭代器,并在客户端进行最终聚合。
让我以以下事实序言:我多年来都没有使用过Accumulo,但是我不确定您是否能够在服务器端完全执行此操作。原因是,您正在寻找CQ中的值,这些值将分布在Accumulo群集的所有节点上。IE。知道大约00000:0000的平板电脑服务器(保证(对00002:0000等的值一无所知。CQ the rowID(,或者您必须在客户端进行汇总。您也许可以采用混合方法来执行每个平板电脑的某种AGG并在客户端进行剩余的AGG。