在Accumulo中查找没有特定列族的行

  • 本文关键字:Accumulo 查找 accumulo
  • 更新时间 :
  • 英文 :


是否有一种简单的方法可以在Accumulo中查找没有特定列族的行?

例如,这里有一些简单的示例数据(省略了时间戳和可见性):

r|cf|cq|v
1|A |  | 
2|A |  | 
2|B |  |  
3|A |  | 
3|B |  |
4|C |  |

我想创建一个扫描仪,用于查找没有"B"列族的行。在这种情况下,它将返回第1行和第4行。

在Accumulo中没有特定的API调用可以使用,但这是一个很好的例子,说明为什么Accumulo的(SortedKeyValue)迭代器概念很酷。我们可以编写少量代码,并在服务器上而不是在客户端上执行此筛选。

这里有一些代码,而不是让你悬着不放:https://github.com/joshelser/RowsWithoutColumns

具体来说,您可以找到迭代器:https://github.com/joshelser/RowsWithoutColumns/blob/master/src/main/java/accumulo/RowsWithoutColumnIterator.java

以及一些调用它的代码:https://github.com/joshelser/RowsWithoutColumns/blob/master/src/test/java/test/RowsWithoutColumnIteratorTest.java

需要注意的几点是,RowsWithoutColumnIterator需要在内存中缓冲整行以完成您的要求。如果行中有许多列,这种方法将耗尽内存。如果每行有1000列(每个键值为1KB),则服务器必须在内存中保留1MB。如果没有宽列,这就不是问题。此示例也依赖于1.5.0,但此代码可以针对任何版本的Accumulo运行(如果您在测试用例中更改了一些API调用)。

相关内容

  • 没有找到相关文章

最新更新