檢查Hbase表是否存在的最快方法是什麼?在此API展望:檢查表是否存在
http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/HBaseAdmin.html 哪一個是最快的:
以#4你的列表所有桌子s並遍歷它並比較這些表中的其中一個是否與您的表名匹配。
或者還有另一種更聰明的方式?
檢查Hbase表是否存在的最快方法是什麼?在此API展望:檢查表是否存在
http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/HBaseAdmin.html 哪一個是最快的:
以#4你的列表所有桌子s並遍歷它並比較這些表中的其中一個是否與您的表名匹配。
或者還有另一種更聰明的方式?
使用HBaseAdmin.tableExists只需要約500ms來檢查表是否存在。我們的羣集中只有兩個節點,所以它可能取決於羣集的大小,但似乎並不合理地慢。
您可以嘗試打開表的HTable,(我認爲)如果表不存在,它將拋出異常/錯誤(尚未工作,因此無法進行快速測試)。
不是100%,這將工作,只是一個頭頂的想法。 :)
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);
}
這是我的示例代碼。 (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是否存在。
你可以自己測試它,不是嗎? – 2011-02-03 15:59:35