HBase限定符过滤器与值过滤器性能

时间:2013-12-30 10:16:34

标签: hbase

用例 -
一个包含数百万行的HBase表 密钥用于写分发。 需要扫描整个表并根据特定值处理行的子集。

现在有两种选择如何保持价值 -
1. value是列的值(列X =值)
2. value是列限定符。

在选项1(使用列值)中,根据值扫描和过滤将使用SingleColumnValueFilter。
在选项2中,它将使用QualifierFilter,它只应检查是否存在限定符。

问题是这两个选项之间是否存在性能差异。 QualifierFilter应该有更好的性能吗?检查限定符是否比检查列值更便宜?

1 个答案:

答案 0 :(得分:1)

QualiferFilter和ValueFilter都会查看所有单元格(一个查看值中的另一个键 - 请参见下文),以便它们具有相同的性能

QualiferFilter:

@Override
  public ReturnCode filterKeyValue(Cell v) {
    int qualifierLength = v.getQualifierLength();
    if (qualifierLength > 0) {
      if (doCompare(this.compareOp, this.comparator, v.getQualifierArray(),
          v.getQualifierOffset(), qualifierLength)) {
        return ReturnCode.SKIP;
      }
    }
    return ReturnCode.INCLUDE;
  }

ValueFilter:

 @Override
  public ReturnCode filterKeyValue(Cell v) {
    if (doCompare(this.compareOp, this.comparator, v.getValueArray(),
        v.getValueOffset(), v.getValueLength())) {
      return ReturnCode.SKIP;
    }
    return ReturnCode.INCLUDE;
  }