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