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