0

我在扫描时应用限定符过滤器以获取所有已读项目。

QualifierFilter readItems = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("read-1")));
readItems.isFamilyEssential(Bytes.toBytes("meta"));

结果包含读取项,但不包含其他列族。

结果仅包含元列族和 read-1 限定符。

如何获取所有 CF 并仅读取项目?

谢谢

4

1 回答 1

1

目前,执行的操作是通过仅保留限定符与约束匹配的 KeyValue 过滤 { KeyValue }_in 到 { KeyValue}_out - 这不是您想要做的。如果限定符“read-1”不存在,您想过滤掉整行。您可以使用以下逻辑来执行此操作(这是在 Groovy 中,但是应该有意义)

def scan = new Scan()
scan.addFamily('COLUMN_FAMILY'.bytes)

def filter = new SingleColumnValueFilter('COLUMN_FAMILY'.bytes, 'read-1'.bytes, CompareFilter.CompareOp.NOT_EQUAL, new NullComparator())
filter.filterIfMissing = true
scan.filter = filter

这是一个很好的开始使用参数。我不确定你的“read-1”列中有什么,但是,如果它是非空的,这应该做你想要的(或者让你更接近?)。

祝你好运!

于 2013-03-04T21:41:19.090 回答