HBase - Descrivi e modifica

descrivere

Questo comando restituisce la descrizione della tabella. La sua sintassi è la seguente:

hbase> describe 'table name'

Di seguito è riportato l'output del comando description sul file emp tavolo.

hbase(main):006:0> describe 'emp'
   DESCRIPTION
      ENABLED
      
'emp', {NAME ⇒ 'READONLY', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER
⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒ 'NONE', VERSIONS ⇒
'1', TTL true

⇒ 'FOREVER', MIN_VERSIONS ⇒ '0', KEEP_DELETED_CELLS ⇒ 'false',
BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME
⇒ 'personal

data', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW',
REPLICATION_SCOPE ⇒ '0', VERSIONS ⇒ '5', COMPRESSION ⇒ 'NONE',
MIN_VERSIONS ⇒ '0', TTL

⇒ 'FOREVER', KEEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536',
IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'professional
data', DATA_BLO

CK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0',
VERSIONS ⇒ '1', COMPRESSION ⇒ 'NONE', MIN_VERSIONS ⇒ '0', TTL ⇒
'FOREVER', K

EEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒
'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'table_att_unset',
DATA_BLOCK_ENCODING ⇒ 'NO 

NE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒
'NONE', VERSIONS ⇒ '1', TTL ⇒ 'FOREVER', MIN_VERSIONS ⇒ '0',
KEEP_DELETED_CELLS

⇒ 'false', BLOCKSIZE ⇒ '6

alterare

Alter è il comando utilizzato per apportare modifiche a una tabella esistente. Utilizzando questo comando, è possibile modificare il numero massimo di celle di una famiglia di colonne, impostare ed eliminare operatori di ambito di tabella ed eliminare una famiglia di colonne da una tabella.

Modifica del numero massimo di celle di una famiglia di colonne

Di seguito è riportata la sintassi per modificare il numero massimo di celle di una famiglia di colonne.

hbase> alter 't1', NAME ⇒ 'f1', VERSIONS ⇒ 5

Nell'esempio seguente, il numero massimo di celle è impostato su 5.

hbase(main):003:0> alter 'emp', NAME ⇒ 'personal data', VERSIONS ⇒ 5
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.3050 seconds

Operatori di ambito tabella

Utilizzando alter, puoi impostare e rimuovere operatori di ambito di tabella come MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, ecc.

Impostazione di sola lettura

Di seguito viene fornita la sintassi per rendere una tabella di sola lettura.

hbase>alter 't1', READONLY(option)

Nell'esempio seguente, abbiamo creato il file emp tabella di sola lettura.

hbase(main):006:0> alter 'emp', READONLY
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2140 seconds

Rimozione degli operatori dell'ambito della tabella

Possiamo anche rimuovere gli operatori dell'ambito della tabella. Di seguito è riportata la sintassi per rimuovere "MAX_FILESIZE" dalla tabella emp.

hbase> alter 't1', METHOD ⇒ 'table_att_unset', NAME ⇒ 'MAX_FILESIZE'

Eliminazione di una famiglia di colonne

Utilizzando alter, puoi anche eliminare una famiglia di colonne. Di seguito è riportata la sintassi per eliminare una famiglia di colonne utilizzando alter.

hbase> alter ‘ table name ’, ‘delete’ ⇒ ‘ column family ’

Di seguito è riportato un esempio per eliminare una famiglia di colonne dalla tabella "emp".

Supponiamo che ci sia una tabella denominata dipendente in HBase. Contiene i seguenti dati:

hbase(main):006:0> scan 'employee'

   ROW                   COLUMN+CELL

row1 column = personal:city, timestamp = 1418193767, value = hyderabad

row1 column = personal:name, timestamp = 1418193806767, value = raju

row1 column = professional:designation, timestamp = 1418193767, value = manager

row1 column = professional:salary, timestamp = 1418193806767, value = 50000

1 row(s) in 0.0160 seconds

Ora eliminiamo la famiglia di colonne denominata professional utilizzando il comando alter.

hbase(main):007:0> alter 'employee','delete'⇒'professional'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2380 seconds

Ora verifica i dati nella tabella dopo la modifica. Si noti che la famiglia di colonne "professionale" non esiste più, poiché l'abbiamo eliminata.

hbase(main):003:0> scan 'employee'
   ROW             COLUMN + CELL
row1 column = personal:city, timestamp = 14181936767, value = hyderabad

row1 column = personal:name, timestamp = 1418193806767, value = raju

1 row(s) in 0.0830 seconds

Aggiunta di una famiglia di colonne utilizzando l'API Java

È possibile aggiungere una famiglia di colonne a una tabella utilizzando il metodo addColumn() di HBAseAdminclasse. Seguire i passaggi indicati di seguito per aggiungere una famiglia di colonne a una tabella.

Passo 1

Istanziare il file HBaseAdmin classe.

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

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Passo 2

Il addColumn() richiede un nome di tabella e un oggetto di HColumnDescriptorclasse. Quindi istanziare il fileHColumnDescriptorclasse. Il costruttore diHColumnDescriptora sua volta richiede un nome di famiglia di colonne che deve essere aggiunto. Qui stiamo aggiungendo una famiglia di colonne denominata "contactDetails" alla tabella "dipendente" esistente.

// Instantiating columnDescriptor object

HColumnDescriptor columnDescriptor = new
HColumnDescriptor("contactDetails");

Passaggio 3

Aggiungi la famiglia di colonne utilizzando addColumnmetodo. Passa il nome della tabella e il fileHColumnDescriptor oggetto di classe come parametri di questo metodo.

// Adding column family
admin.addColumn("employee", new HColumnDescriptor("columnDescriptor"));

Di seguito è riportato il programma completo per aggiungere una famiglia di colonne a una tabella esistente.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class AddColoumn{

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

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

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Instantiating columnDescriptor class
      HColumnDescriptor columnDescriptor = new HColumnDescriptor("contactDetails");
      
      // Adding column family
      admin.addColumn("employee", columnDescriptor);
      System.out.println("coloumn added");
   }
}

Compilare ed eseguire il programma sopra come mostrato di seguito.

$javac AddColumn.java
$java AddColumn

La compilazione sopra funziona solo se hai impostato il classpath in " .bashrc". In caso contrario, seguire la procedura indicata di seguito per compilare il file .java.

//if "/home/home/hadoop/hbase " is your Hbase home folder then.

$javac -cp /home/hadoop/hbase/lib/*: Demo.java

Se tutto va bene, produrrà il seguente output:

column added

Eliminazione di una famiglia di colonne utilizzando l'API Java

È possibile eliminare una famiglia di colonne da una tabella utilizzando il metodo deleteColumn() di HBAseAdminclasse. Seguire i passaggi indicati di seguito per aggiungere una famiglia di colonne a una tabella.

Passo 1

Istanziare il file HBaseAdmin classe.

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

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Passo 2

Aggiungi la famiglia di colonne utilizzando deleteColumn()metodo. Passare il nome della tabella e il nome della famiglia di colonne come parametri a questo metodo.

// Deleting column family
admin.deleteColumn("employee", "contactDetails");

Di seguito è riportato il programma completo per eliminare una famiglia di colonne da una tabella esistente.

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 DeleteColoumn{

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

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

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Deleting a column family
      admin.deleteColumn("employee","contactDetails");
      System.out.println("coloumn deleted"); 
   }
}

Compilare ed eseguire il programma sopra come mostrato di seguito.

$javac DeleteColumn.java
$java DeleteColumn

Il seguente dovrebbe essere l'output:

column deleted