1

我试图在我的 HBase Scan 对象上放置一个过滤器,它会跳过没有填充必要列的行。我想我应该先使用一个跳过过滤器,但后来我被难住了。我在包摘要中没有看到任何关于列是否存在的信息。

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

4

1 回答 1

2

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

例如 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 过滤器包包含很好的示例。您可以浏览它们并编写自己的。

于 2012-03-11T08:18:37.927 回答