HBase - Excluir dados

Excluindo uma célula específica em uma tabela

Usando o deletecomando, você pode excluir uma célula específica em uma tabela. A sintaxe dedelete comando é o seguinte:

delete ‘<table name>’, ‘<row>’, ‘<column name >’, ‘<time stamp>’

Exemplo

Aqui está um exemplo para excluir uma célula específica. Aqui estamos excluindo o salário.

hbase(main):006:0> delete 'emp', '1', 'personal data:city',
1417521848375
0 row(s) in 0.0060 seconds

Excluindo todas as células de uma tabela

Usando o comando “deleteall”, você pode excluir todas as células em uma linha. A seguir está a sintaxe do comando deleteall.

deleteall ‘<table name>’, ‘<row>’,

Exemplo

Aqui está um exemplo de comando “deleteall”, onde estamos excluindo todas as células da linha 1 da tabela emp.

hbase(main):007:0> deleteall 'emp','1'
0 row(s) in 0.0240 seconds

Verifique a tabela usando o scancomando. Um instantâneo da tabela após excluí-la é fornecido abaixo.

hbase(main):022:0> scan 'emp'

ROW                  COLUMN + CELL

2 column = personal data:city, timestamp = 1417524574905, value = chennai 

2 column = personal data:name, timestamp = 1417524556125, value = ravi

2 column = professional data:designation, timestamp = 1417524204, value = sr:engg

2 column = professional data:salary, timestamp = 1417524604221, value = 30000

3 column = personal data:city, timestamp = 1417524681780, value = delhi

3 column = personal data:name, timestamp = 1417524672067, value = rajesh
 
3 column = professional data:designation, timestamp = 1417523187, value = jr:engg

3 column = professional data:salary, timestamp = 1417524702514, value = 25000

Exclusão de dados usando a API Java

Você pode excluir dados de uma tabela HBase usando o delete() método do HTableclasse. Siga as etapas abaixo para excluir dados de uma tabela.

Etapa 1: instanciar a classe de configuração

Configurationclasse adiciona arquivos de configuração HBase a seu objeto. Você pode criar um objeto de configuração usando ocreate() método do HbaseConfiguration classe como mostrado abaixo.

Configuration conf = HbaseConfiguration.create();

Etapa 2: instancie a classe HTable

Você tem uma classe chamada HTable, uma implementação da Tabela no HBase. Esta classe é usada para se comunicar com uma única tabela HBase. Ao instanciar essa classe, ele aceita o objeto de configuração e o nome da tabela como parâmetros. Você pode instanciar a classe HTable conforme mostrado abaixo.

HTable hTable = new HTable(conf, tableName);

Etapa 3: instanciar a classe de exclusão

Instancie o Deleteclasse passando o rowid da linha que deve ser excluída, no formato de matriz de bytes. Você também pode passar timestamp e Rowlock para este construtor.

Delete delete = new Delete(toBytes("row1"));

Etapa 4: Selecione os dados a serem excluídos

Você pode excluir os dados usando os métodos de exclusão do Deleteclasse. Esta classe possui vários métodos de exclusão. Escolha as colunas ou famílias de colunas a serem excluídas usando esses métodos. Dê uma olhada nos exemplos a seguir que mostram o uso dos métodos da classe Delete.

delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
delete.deleteFamily(Bytes.toBytes("professional"));

Etapa 5: excluir os dados

Exclua os dados selecionados passando o delete instância para o delete() método do HTable classe como mostrado abaixo.

table.delete(delete);

Etapa 6: feche o HTableInstance

Depois de excluir os dados, feche o HTable Instância.

table.close();

A seguir está o programa completo para excluir dados da tabela HBase.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

public class DeleteData {

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

      // Instantiating Configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(conf, "employee");

      // Instantiating Delete class
      Delete delete = new Delete(Bytes.toBytes("row1"));
      delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
      delete.deleteFamily(Bytes.toBytes("professional"));

      // deleting the data
      table.delete(delete);

      // closing the HTable object
      table.close();
      System.out.println("data deleted.....");
   }
}

Compile e execute o programa acima conforme mostrado abaixo.

$javac Deletedata.java
$java DeleteData

O seguinte deve ser o resultado:

data deleted