使用 Accumulo 的迭代器和组合器聚合来自多行的值
Using Accumulo's iterators and combiners to aggregate values from multiple rows
我想知道是否可以对存储在多行中的值执行聚合操作。例如,我有以下 table
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
我想做的是找到所有存储在 columnQualifier A 中的值的平均值。是否可以使用 Accumulo 的迭代器、过滤器或组合器?
我看到了 StatsCombiner,但该组合器对同一键的不同版本(rowID、colFam 和 colQual 相同但时间戳不同)执行聚合,而不是对不同键本身执行聚合。
让我先说明一下,我已经很多年没有使用过 Accumulo,但我不确定您是否能够在服务器端完全做到这一点。原因是,您正在寻找 CQ 中的值,这些值将分布在 Accumulo 集群的所有节点中。 IE。知道 00000:0000 的平板电脑服务器不(保证)知道 00002:0000 等值的任何信息。您可能需要对数据进行第二次索引以提供此信息功能(即使 CQ 成为 RowID),否则您将不得不在客户端进行聚合。您可以采用一种混合方法,即在每个平板电脑上执行一些聚合并在客户端执行剩余的聚合。
组合器(及其前身聚合器)对同一个键进行聚合。您可以创建一个将多个键转换为单个键的迭代器,但您仍然必须在客户端中进行聚合,因为您将为每个 tablet.[=11 生成一堆部分计算=]
您可以使用 Apache Fluo 的 "observers" 来汇总您的统计数据,同时摄取到您的 table。
可能有多种解决方案。我建议看一下 Apache Fluo,如果您真的不想使用它,那么可以考虑将部分 sums/counts 聚合为每个 tablet 中的迭代器,并在客户端。
我想知道是否可以对存储在多行中的值执行聚合操作。例如,我有以下 table
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
我想做的是找到所有存储在 columnQualifier A 中的值的平均值。是否可以使用 Accumulo 的迭代器、过滤器或组合器?
我看到了 StatsCombiner,但该组合器对同一键的不同版本(rowID、colFam 和 colQual 相同但时间戳不同)执行聚合,而不是对不同键本身执行聚合。
让我先说明一下,我已经很多年没有使用过 Accumulo,但我不确定您是否能够在服务器端完全做到这一点。原因是,您正在寻找 CQ 中的值,这些值将分布在 Accumulo 集群的所有节点中。 IE。知道 00000:0000 的平板电脑服务器不(保证)知道 00002:0000 等值的任何信息。您可能需要对数据进行第二次索引以提供此信息功能(即使 CQ 成为 RowID),否则您将不得不在客户端进行聚合。您可以采用一种混合方法,即在每个平板电脑上执行一些聚合并在客户端执行剩余的聚合。
组合器(及其前身聚合器)对同一个键进行聚合。您可以创建一个将多个键转换为单个键的迭代器,但您仍然必须在客户端中进行聚合,因为您将为每个 tablet.[=11 生成一堆部分计算=]
您可以使用 Apache Fluo 的 "observers" 来汇总您的统计数据,同时摄取到您的 table。
可能有多种解决方案。我建议看一下 Apache Fluo,如果您真的不想使用它,那么可以考虑将部分 sums/counts 聚合为每个 tablet 中的迭代器,并在客户端。