0

accumulo にデータを挿入しました。しかし、どうすればテーブルの正確な数を知ることができますか? エントリ数の累積テーブルサイズを読み取る方法または API はありますか?

4

2 に答える 2

4

まず、Accumulo は、アクティブな取り込み中のテーブルの正確なサイズを認識していません。これは概算になります。この情報を取得するためのパブリック API メソッドは存在しないと思いますが、呼び出すことができる内部メソッドがいくつかあります。次のようなものが機能するはずです。

ClientContext context = new ClientContext(instance, credentials, clientConfiguration);
MasterClientService.Iface client = null;
MasterMonitorInfo mmi = null;
while (null == mmi) {
  try {
    client = MasterClient.getConnection(context);
    if (client != null) {
      mmi = client.getMasterStats(Tracer.traceInfo(), context.rpcCreds())
    }
  } finally {
    if (null != client) {
      MasterClient.close(client);
    }
  }
}
for (Entry<String,TableInfo> table : mmi.getTableMap().entrySet()) {
  System.out.println(table.getKey() + "=>" + (table.getValue().recs + table.getValue().recsInMemory));
}

これは、Accumulo モニターがこれらの値を取得する方法と似ています。これらは内部 API であるため、使用するのは少し大まかで、リリース間で変更される可能性があります。これらの API を通常のインスタンスまたはコネクタ メソッドで公開したい場合は、プロジェクトの JIRAインスタンスでイシューを開いてください!

于 2015-02-25T21:14:20.227 に答える
3

プログラムでそれを行う必要がありますか?そうでない場合は、これを行うためのさまざまな方法があります。最も簡単な方法は、 port の Accumulo モニター ページに移動することです50095。大量のデータがない場合は、コマンドラインから簡単に実行できます

accumulo shell -u username -p password -e "scan -t foo -np" | wc -l
于 2015-02-25T13:35:12.793 に答える