【问题标题】:hbase qualifier filter skips other column familieshbase 限定符过滤器跳过其他列族
【发布时间】:2013-03-03 14:27:46
【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

    标签: hbase


    【解决方案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”列中有什么,但是,如果它不为空,这应该可以满足您的要求(或者让您更接近?)。

    祝你好运!

    【讨论】:

    • 有什么东西只检查限定符而不检查其中的实际值
    • 我已经看过并尝试过,但是,从来没有遇到过任何有效的方法(而且我花了很多时间在上面)......我不知道 - 但是 - 我不知道不这么认为......
    • 只检查限定符会很有效,因为它们在内部保持排序。所以我想我必须实现自己的过滤器才能做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多