Я вставил данные в accumulo. Но как я узнаю точный счет таблицы? Есть ли какой-либо метод или API для чтения размера таблицы накопления количества записей?
Как узнать количество записей или размер таблицы в Accumulo?
Ответы (2)
Вам нужно сделать это программно? Если нет, есть разные способы сделать это. Проще всего зайти на страницу монитора Accumulo на порту 50095
. Если у вас нет тонны данных, из командной строки вы можете просто сделать
accumulo shell -u username -p password -e "scan -t foo -np" | wc -l
Во-первых, 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!