HBase扫描过滤器 - 跳过没有必需列的行

时间:2012-03-06 22:47:21

标签: filter hbase database-scan

我正在尝试在我的HBase Scan对象上放置一个过滤器,该过滤器会跳过没有填写必要列的行。我想我应该首先使用跳过过滤器,但后来我感到难过。我没有在package summary中看到有关列是否存在的任何内容。

我应该使用列值过滤器,并检查有问题的列是否为空或空白?为什么过滤器会返回列(例如ColumnCountGetFilter)?是否有指南或某些人可以指向我的更多有关过滤器的信息,而不仅仅是javadocs的集合?

1 个答案:

答案 0 :(得分:2)

您可以查看过滤器包的源代码。

e.g。如果查看以下代码,ColumnCountGetFilter的源代码很短,

@Override
public boolean filterAllRemaining() {
  return this.count > this.limit;
}

@Override
public ReturnCode filterKeyValue(KeyValue v) {
  this.count++;
  return filterAllRemaining() ? ReturnCode.SKIP: ReturnCode.INCLUDE;
}

您应该了解过滤器实现返回ReturnCode.SKIP或ReturnCode.INCLUDE,它们不会直接返回colmns。它们返回标志以告知是否应将KeyValues返回给客户端。

您可能需要实现自定义过滤器,HBase过滤器包中包含良好的样本。你可以通过它们自己编写。