HBase - Aggiorna dati

Aggiornamento dei dati utilizzando HBase Shell

È possibile aggiornare un valore di cella esistente utilizzando il putcomando. Per fare ciò, segui la stessa sintassi e menziona il tuo nuovo valore come mostrato di seguito.

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

Il valore appena fornito sostituisce il valore esistente, aggiornando la riga.

Esempio

Supponiamo che ci sia una tabella in HBase chiamata emp con i seguenti dati.

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

Il seguente comando aggiornerà il valore della città del dipendente denominato "Raju" a Delhi.

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

La tabella aggiornata appare come segue dove puoi osservare la città di Raju è stata cambiata in "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

Aggiornamento dei dati utilizzando l'API Java

È possibile aggiornare i dati in una cella particolare utilizzando il put()metodo. Seguire i passaggi indicati di seguito per aggiornare un valore di cella esistente di una tabella.

Passaggio 1: creare un'istanza della classe di configurazione

Configurationclass aggiunge i file di configurazione HBase al proprio oggetto. È possibile creare un oggetto di configurazione utilizzando ilcreate() metodo del HbaseConfiguration classe come mostrato di seguito.

Configuration conf = HbaseConfiguration.create();

Passaggio 2: creare un'istanza della classe HTable

Hai una classe chiamata HTable, un'implementazione di Table in HBase. Questa classe viene utilizzata per comunicare con una singola tabella HBase. Durante la creazione di un'istanza di questa classe, accetta l'oggetto di configurazione e il nome della tabella come parametri. È possibile creare un'istanza della classe HTable come mostrato di seguito.

HTable hTable = new HTable(conf, tableName);

Passaggio 3: istanzia la classe put

Per inserire dati nella tabella HBase, il file add()vengono utilizzati il ​​metodo e le sue varianti. Questo metodo appartiene aPut, quindi crea un'istanza di putclasse. Questa classe richiede il nome della riga in cui si desidera inserire i dati, in formato stringa. Puoi istanziare il filePut classe come mostrato di seguito.

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

Passaggio 4: aggiorna una cella esistente

Il add() metodo di Putclass viene utilizzata per inserire dati. Richiede array di 3 byte che rappresentano rispettivamente la famiglia di colonne, il qualificatore di colonna (nome di colonna) e il valore da inserire. Inserisci i dati nella tabella HBase usando iladd() metodo come mostrato di seguito.

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

Passaggio 5: salvare i dati nella tabella

Dopo aver inserito le righe richieste, salva le modifiche aggiungendo l'istanza put al file put() metodo della classe HTable come mostrato di seguito.

hTable.put(p);

Passaggio 6: chiudere l'istanza HTable

Dopo aver creato i dati nella tabella HBase, chiudere il file HTable istanza utilizzando il metodo close () come mostrato di seguito.

hTable.close();

Di seguito è riportato il programma completo per aggiornare i dati in una determinata tabella.

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

Compilare ed eseguire il programma sopra come mostrato di seguito.

$javac UpdateData.java
$java UpdateData

Il seguente dovrebbe essere l'output:

data Updated