HBase - Disabling a Table

使用HBase Shell禁用表

要删除表或更改其设置,您需要先使用disable命令禁用该表.您可以使用enable命令重新启用它.

以下是禁用表的语法:

disable ‘emp’

示例

下面给出了一个示例,说明如何禁用表.

hbase(main):025:0> disable 'emp'
0 row(s) in 1.2760 seconds

验证

禁用表格后,你仍然可以通过 list exists 命令来感知它的存在.你无法扫描它.它会给你以下错误.

hbase(main):028:0> scan 'emp'
ROW         COLUMN + CELL
ERROR: emp is disabled.

is_disabled

此命令用于查找表是否已禁用.其语法如下.

hbase> is_disabled 'table name'

以下示例验证是否禁用名为emp的表.如果它被禁用,它将返回true,如果不是,它将返回false.

hbase(main):031:0> is_disabled 'emp'
true
0 row(s) in 0.0440 seconds

disable_all

此命令用于禁用与给定正则表达式匹配的所有表. disable_all 命令的语法如下所示.

hbase> disable_all 'r.*'

假设HBase中有5个表,即raja,rajani,rajendra,rajesh和
raju.以下代码将禁用以 raj开头的所有表.

hbase(main):002:07> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

使用Java API禁用表

验证是否如果禁用表,则使用 isTableDisabled()方法并禁用表,使用 disableTable()方法.这些方法属于 HBaseAdmin 类.按照下面给出的步骤禁用表格.

步骤1

实例化 HBaseAdmin 类,如下所示.

//创建配置对象
配置conf = HBaseConfiguration.create(); 
//创建HBaseAdmin对象
 HBaseAdmin admin = new HBaseAdmin(conf);

步骤2

验证是否使用 isTableDisabled()方法禁用了表格如下所示.

Boolean b = admin.isTableDisabled("emp");

第3步

如果表未被禁用,请将其禁用,如下所示.

if(!b){
   admin.disableTable("emp");
   System.out.println("Table disabled");
}

以下是验证表是否被禁用的完整程序;如果没有,如何禁用它.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DisableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();
 
      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying weather the table is disabled
      Boolean bool = admin.isTableDisabled("emp");
      System.out.println(bool);

      // Disabling the table using HBaseAdmin object
      if(!bool){
         admin.disableTable("emp");
         System.out.println("Table disabled");
      }
   }
}

编译并执行上述程序,如下所示.

$javac DisableTable.java
$java DsiableTable

以下应该是输出:

false
Table disabled