HBase禁用表


要刪除表或改變其設定,首先需要使用 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.*'

假設有5個表在HBase,即raja, rajani, rajendra, rajesh 和 raju。下面的程式碼將禁用所有以 raj 開始的表。

hbase(main):002:0> 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類的範例如下所示。

// Creating configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
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