Использование Hbase Thrift2 API в переполнении стека

Я использую Thrift API для HBase в C ++ (пример использования Вот), но теперь у меня есть необходимость использовать Thrift2. Я знаю, что есть примеры использования Thrift2 на других языках, таких как C #, Python и Java, но я не могу найти документацию для C ++.

Вот мой текущий код для вызова Thrift API:

transport->open();
std::string t("demo_table");

/ Scan all tables, look for the demo table and delete it. /
std::cout << "scanning tables..." << std::endl;
StrVec tables;
client.getTableNames(tables);
for (StrVec::const_iterator it = tables.begin(); it != tables.end(); ++it) {
std::cout << " found: " << *it << std::endl;
if (t == *it) {
if (client.isTableEnabled(*it)) {
std::cout << " disabling table: " << *it << std::endl;
client.disableTable(*it);
}
std::cout << " deleting table: " << *it << std::endl;
client.deleteTable(*it);
}
}

Теперь это не удается после переключения на Thrift2. Например, client.getTableNames () больше не работает (функция не существует).

3

Решение

Некоторые функции удалены из интерфейса hbase thrift2. Если вы просто хотите получить список имен таблиц в hbase, вы можете использовать get children из / hbase / table в zookeeper.

struct String_vector paths;
int ret = zoo_get_children(zkhandle,"/hbase/table", 0,&paths);//
if(ret)
{
std::cout << "zoo_get_children error " << ret << std::endl;
} else {
for(i = 0;i < paths.count;i++)
printf("/hbase/table/%s\n",paths.data[i]);
free_vector(&paths);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]