Получить все регионы HBase, избегая переподключения клиентов Zookeeper - PullRequest
0 голосов
/ 08 ноября 2018

для требований проекта мне нужно извлечь метаданные HBase для всех регионов. Именно для каждого региона мне нужны следующие поля:

  • Имя схемы
  • Название таблицы
  • Кодовое имя
  • Стартовый ключ
  • Клавиша завершения

Итак, я придумал это решение:

List<HTableDescriptor> hTableDescriptors = Arrays.asList(admin.listTables());
        for (HTableDescriptor hTableDescriptor : hTableDescriptors) {
            TableName name = hTableDescriptor.getTableName();
            List<HRegionInfo> tableRegions = admin.getTableRegions(name);
            LOG.info("Found {} regions",tableRegions.size());
            for (HRegionInfo region : tableRegions) {
                RegionDetailInfo detailInfo = new RegionDetailInfo();
                detailInfo.setSchemaName(name.getNamespaceAsString());
                detailInfo.setTableName(name.getNameAsString());
                detailInfo.setEncodeName(region.getEncodedName());
            detailInfo.setStartKey(Bytes.toString(region.getStartKey()));
                    detailInfo.setEndKey(Bytes.toString(region.getEndKey()));
/* other stuff */
                }
            }

Проблема здесь в том, что утверждение: admin.getTableRegions(name); необходимо установить соединение zookeeper для каждой таблицы. Таким образом, чтение метаданных идет очень медленно.

Есть ли другой способ выполнить ту же задачу?

...