如何找出Accumulo中的表格数量或表格大小?

时间:2015-02-25 12:20:49

标签: accumulo

我已将数据插入accumulo。但我怎么知道桌子的确切数量? 是否有任何方法或API来读取条目数的累积表大小?

2 个答案:

答案 0 :(得分: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,请在project's JIRA实例上打开一个问题!

答案 1 :(得分:2)

你需要以编程方式进行吗?如果没有,有多种方法可以做到这一点。最简单的方法是转到端口50095上的Accumulo监控页面。如果您没有大量数据,可以从命令行执行

accumulo shell -u username -p password -e "scan -t foo -np" | wc -l