Проверьте, существует ли таблица - PullRequest
5 голосов
/ 03 февраля 2011

Какой самый быстрый способ проверить, существует ли таблица Hbase?Глядя на этот API:

http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/HBaseAdmin.html Какой из них является самым быстрым:

  1. tableExists
  2. isTableEnabled
  3. isTableAvailable
  4. listTables

С помощью # 4 вы получите список всех таблиц и выполните итерациии сравните, если одна из этих таблиц совпадает с именем вашей таблицы.

Или есть другой, более умный способ?

Ответы [ 4 ]

4 голосов
/ 02 мая 2014

Вот мой пример кода. (Скала)

import org.apache.hadoop.hbase.HBaseConfiguration

var TableName = "sample"
val conf = HBaseConfiguration.create()
var hbaseAdmin = new HBaseAdmin(conf)
if (!hbaseAdmin.tableExists(TableName)) {
  println(TableName + " Does Not Exist")
}

Здесь вам просто нужно использовать "tableExists", чтобы проверить, существует ли это TableName.

3 голосов
/ 19 июля 2013
  HBaseAdmin hba = new HBaseAdmin(hbaseTemplate.getConfiguration());
    if (hba.tableExists(tableName) == false) {

        HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);
        HColumnDescriptor columnDescriptor = new HColumnDescriptor(columnFamilyProfile);
        tableDescriptor.addFamily(columnDescriptor);

        hba.createTable(tableDescriptor);
    }
1 голос
/ 04 февраля 2011

Использование HBaseAdmin.tableExists занимает всего около 500 мс, чтобы проверить, существует ли таблица.У нас есть только два узла в нашем кластере, поэтому он может зависеть от размера вашего кластера, но он не кажется необоснованно медленным.

0 голосов
/ 03 февраля 2011

Вы можете попытаться открыть HTable для таблицы, и (я думаю) она выдаст исключение / ошибку (пока не работает, поэтому не может выполнить быстрый тест), если таблица не 'не существует.

Не на 100% это сработает, просто в идеале.:)

...