我已将数据插入累加器。但是我怎么知道桌子的确切数量?是否有任何方法或 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,所以它们使用起来有些粗糙,并且可能会随着版本的变化而变化。如果您希望通过普通的 Instance 或 Connector 方法看到这些 API,请在项目的 JIRA实例上打开一个问题!
于 2015-02-25T21:14:20.227 回答
3
您需要以编程方式进行吗?如果没有,有多种方法可以做到这一点。最简单的方法是转到端口上的 Accumulo 监控页面50095
。如果您没有大量数据,则可以从命令行简单地执行
accumulo shell -u username -p password -e "scan -t foo -np" | wc -l
于 2015-02-25T13:35:12.793 回答