2011-02-03 240 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是否存在。