HBase - Atualizar dados

Atualizando dados usando HBase Shell

Você pode atualizar um valor de célula existente usando o putcomando. Para fazer isso, basta seguir a mesma sintaxe e mencionar seu novo valor conforme mostrado abaixo.

put ‘table name’,’row ’,'Column family:column name',’new value’

O valor fornecido recentemente substitui o valor existente, atualizando a linha.

Exemplo

Suponha que haja uma tabela no HBase chamada emp com os seguintes dados.

hbase(main):003:0> scan 'emp'
 ROW              COLUMN + CELL
row1 column = personal:name, timestamp = 1418051555, value = raju
row1 column = personal:city, timestamp = 1418275907, value = Hyderabad
row1 column = professional:designation, timestamp = 14180555,value = manager
row1 column = professional:salary, timestamp = 1418035791555,value = 50000
1 row(s) in 0.0100 seconds

O comando a seguir atualizará o valor da cidade do funcionário chamado 'Raju' para Delhi.

hbase(main):002:0> put 'emp','row1','personal:city','Delhi'
0 row(s) in 0.0400 seconds

A tabela atualizada tem a seguinte aparência, onde você pode observar que a cidade de Raju foi alterada para 'Delhi'.

hbase(main):003:0> scan 'emp'
  ROW          COLUMN + CELL
row1 column = personal:name, timestamp = 1418035791555, value = raju
row1 column = personal:city, timestamp = 1418274645907, value = Delhi
row1 column = professional:designation, timestamp = 141857555,value = manager
row1 column = professional:salary, timestamp = 1418039555, value = 50000
1 row(s) in 0.0100 seconds

Atualizando dados usando a API Java

Você pode atualizar os dados em uma célula específica usando o put()método. Siga as etapas fornecidas abaixo para atualizar um valor de célula existente 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 Put

Para inserir dados na Tabela HBase, o add()método e suas variantes são usados. Este método pertence aPut, portanto, instancie o putclasse. Esta classe requer o nome da linha em que você deseja inserir os dados, em formato de string. Você pode instanciar oPut classe como mostrado abaixo.

Put p = new Put(Bytes.toBytes("row1"));

Etapa 4: Atualizar uma célula existente

o add() método de Putclasse é usada para inserir dados. Requer matrizes de 3 bytes que representam família de colunas, qualificador de coluna (nome da coluna) e o valor a ser inserido, respectivamente. Insira os dados na tabela HBase usando oadd() método conforme mostrado abaixo.

p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column
name"),Bytes.toBytes("value"));
p.add(Bytes.toBytes("personal"),
Bytes.toBytes("city"),Bytes.toBytes("Delih"));

Etapa 5: salve os dados na tabela

Depois de inserir as linhas necessárias, salve as alterações adicionando a instância put ao put() método da classe HTable conforme mostrado abaixo.

hTable.put(p);

Etapa 6: Fechar a instância HTable

Depois de criar dados na Tabela HBase, feche o HTable instância usando o método close () conforme mostrado abaixo.

hTable.close();

A seguir está o programa completo para atualizar os dados em uma determinada tabela.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

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

public class UpdateData{

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

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

      // Instantiating HTable class
      HTable hTable = new HTable(config, "emp");

      // Instantiating Put class
      //accepts a row name
      Put p = new Put(Bytes.toBytes("row1"));

      // Updating a cell value
      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("city"),Bytes.toBytes("Delih"));

      // Saving the put Instance to the HTable.
      hTable.put(p);
      System.out.println("data Updated");

      // closing HTable
      hTable.close();
   }
}

Compile e execute o programa acima conforme mostrado abaixo.

$javac UpdateData.java
$java UpdateData

O seguinte deve ser o resultado:

data Updated