HBase - Desativando uma Tabela

Desativando uma tabela usando o HBase Shell

Para excluir uma tabela ou alterar suas configurações, você precisa primeiro desabilitar a tabela usando o comando disable. Você pode reativá-lo usando o comando enable.

A seguir está a sintaxe para desabilitar uma tabela:

disable ‘emp’

Exemplo

Abaixo está um exemplo que mostra como desabilitar uma tabela.

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

Verificação

Depois de desativar a tabela, você ainda pode sentir sua existência por meio list e existscomandos. Você não pode digitalizá-lo. Isso lhe dará o seguinte erro.

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

está desabilitado

Este comando é usado para descobrir se uma tabela está desabilitada. Sua sintaxe é a seguinte.

hbase> is_disabled 'table name'

O exemplo a seguir verifica se a tabela chamada emp está desabilitada. Se estiver desabilitado, ele retornará verdadeiro e se não, retornará falso.

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

disable_all

Este comando é usado para desabilitar todas as tabelas que correspondem ao regex fornecido. A sintaxe paradisable_all comando é fornecido abaixo.

hbase> disable_all 'r.*'

Suponha que existam 5 tabelas no HBase, a saber raja, rajani, rajendra, rajesh e raju. O código a seguir irá desativar todas as tabelas começando comraj.

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

Desativar uma tabela usando a API Java

Para verificar se uma tabela está desabilitada, isTableDisabled() método é usado e para desabilitar uma tabela, disableTable()método é usado. Esses métodos pertencem aoHBaseAdminclasse. Siga as etapas abaixo para desabilitar uma tabela.

Passo 1

Instanciar HBaseAdmin classe como mostrado abaixo.

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

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Passo 2

Verifique se a tabela está desabilitada usando isTableDisabled() método conforme mostrado abaixo.

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

etapa 3

Se a tabela não estiver desabilitada, desabilite-a conforme mostrado abaixo.

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

A seguir está o programa completo para verificar se a tabela está desabilitada; se não, como desativá-lo.

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");
      }
   }
}

Compile e execute o programa acima conforme mostrado abaixo.

$javac DisableTable.java
$java DsiableTable

O seguinte deve ser o resultado:

false
Table disabled