检查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