1

必要な列が入力されていない行をスキップするフィルターをHBaseScanオブジェクトに配置しようとしています。最初にスキップフィルターを使用する必要があると思いますが、その後困惑します。パッケージの概要には、列が存在するかどうかについては何も表示されません。

列値フィルターを使用して、問題の列がnullまたは空白かどうかを確認する必要がありますか?また、フィルターが列(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を返すことを理解する必要があります。これらは、列を直接返しません。KeyValuesをクライアント側に返す必要があるかどうかを示すフラグを返します。

カスタムフィルターを実装する必要がある場合があります。HBaseフィルターパッケージには適切なサンプルが含まれています。あなたはそれらを通り抜けてあなた自身を書くことができます。

于 2012-03-11T08:18:37.927 に答える