Как узнать количество записей или размер таблицы в Accumulo?

Я вставил данные в accumulo. Но как я узнаю точный счет таблицы? Есть ли какой-либо метод или API для чтения размера таблицы накопления количества записей?


person srikanth    schedule 25.02.2015    source источник


Ответы (2)


Вам нужно сделать это программно? Если нет, есть разные способы сделать это. Проще всего зайти на страницу монитора Accumulo на порту 50095. Если у вас нет тонны данных, из командной строки вы можете просто сделать

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

Во-первых, 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 открывались с помощью обычных методов Instance или Connector, откройте вопрос на экземпляр проекта JIRA!

person elserj    schedule 25.02.2015