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