我试图在我的 HBase Scan 对象上放置一个过滤器,它会跳过没有填充必要列的行。我想我应该先使用一个跳过过滤器,但后来我被难住了。我在包摘要中没有看到任何关于列是否存在的信息。
我应该使用列值过滤器,并检查有问题的列是空的还是空白的?以及为什么过滤器会返回列(例如 ColumnCountGetFilter)?是否有指南或有人可以指点我了解更多关于过滤器的信息,而不仅仅是 javadocs 的集合?
我试图在我的 HBase Scan 对象上放置一个过滤器,它会跳过没有填充必要列的行。我想我应该先使用一个跳过过滤器,但后来我被难住了。我在包摘要中没有看到任何关于列是否存在的信息。
我应该使用列值过滤器,并检查有问题的列是空的还是空白的?以及为什么过滤器会返回列(例如 ColumnCountGetFilter)?是否有指南或有人可以指点我了解更多关于过滤器的信息,而不仅仅是 javadocs 的集合?
您可以查看过滤器包的源代码。
例如 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 过滤器包包含很好的示例。您可以浏览它们并编写自己的。