2011-02-03 229 views
5

检查Hbase表是否存在的最快方法是什么?在此API展望:检查表是否存在

http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/HBaseAdmin.html 哪一个是最快的:

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

以#4你的列表所有桌子s并遍历它并比较这些表中的其中一个是否与您的表名匹配。

或者还有另一种更聪明的方式?

+0

你可以自己测试它,不是吗? – 2011-02-03 15:59:35

回答

1

使用HBaseAdmin.tableExists只需要约500ms来检查表是否存在。我们的群集中只有两个节点,所以它可能取决于群集的大小,但似乎并不合理地慢。

0

您可以尝试打开表的HTable,(我认为)如果表不存在,它将抛出异常/错误(尚未工作,因此无法进行快速测试)。

不是100%,这将工作,只是一个头顶的想法。 :)

3
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); 
    } 
3

这是我的示例代码。 (scala)

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是否存在。