HBase - Beschreiben & Ändern
beschreiben
Dieser Befehl gibt die Beschreibung der Tabelle zurück. Die Syntax lautet wie folgt:
hbase> describe 'table name'
Unten ist die Ausgabe des Befehls description auf dem emp Tabelle.
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
ändern
Ändern ist der Befehl, mit dem Änderungen an einer vorhandenen Tabelle vorgenommen werden. Mit diesem Befehl können Sie die maximale Anzahl von Zellen einer Spaltenfamilie ändern, Tabellenbereichsoperatoren festlegen und löschen sowie eine Spaltenfamilie aus einer Tabelle löschen.
Ändern der maximalen Anzahl von Zellen einer Spaltenfamilie
Im Folgenden wird die Syntax zum Ändern der maximalen Anzahl von Zellen einer Spaltenfamilie angegeben.
hbase> alter 't1', NAME ⇒ 'f1', VERSIONS ⇒ 5
Im folgenden Beispiel wird die maximale Anzahl von Zellen auf 5 festgelegt.
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
Tabellenbereichsoperatoren
Mit alter können Sie Tabellenbereichsoperatoren wie MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH usw. festlegen und entfernen.
Schreibgeschützt einstellen
Nachstehend ist die Syntax angegeben, mit der eine Tabelle schreibgeschützt wird.
hbase>alter 't1', READONLY(option)
Im folgenden Beispiel haben wir die gemacht emp Tabelle schreibgeschützt.
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
Entfernen von Tabellenbereichsoperatoren
Wir können auch die Tabellenbereichsoperatoren entfernen. Im Folgenden wird die Syntax zum Entfernen von 'MAX_FILESIZE' aus der emp-Tabelle angegeben.
hbase> alter 't1', METHOD ⇒ 'table_att_unset', NAME ⇒ 'MAX_FILESIZE'
Löschen einer Spaltenfamilie
Mit alter können Sie auch eine Spaltenfamilie löschen. Im Folgenden wird die Syntax zum Löschen einer Spaltenfamilie mit alter angegeben.
hbase> alter ‘ table name ’, ‘delete’ ⇒ ‘ column family ’
Im Folgenden finden Sie ein Beispiel zum Löschen einer Spaltenfamilie aus der Tabelle 'emp'.
Angenommen, in HBase gibt es eine Tabelle mit dem Namen employee. Es enthält folgende Daten:
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
Löschen wir nun die benannte Spaltenfamilie professional mit dem Befehl 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
Überprüfen Sie nun die Daten in der Tabelle nach der Änderung. Beachten Sie, dass die Spaltenfamilie 'professional' nicht mehr ist, da wir sie gelöscht haben.
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
Hinzufügen einer Spaltenfamilie mithilfe der Java-API
Mit der Methode können Sie einer Tabelle eine Spaltenfamilie hinzufügen addColumn() von HBAseAdminKlasse. Führen Sie die folgenden Schritte aus, um einer Tabelle eine Spaltenfamilie hinzuzufügen.
Schritt 1
Instanziieren Sie die HBaseAdmin Klasse.
// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();
// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);
Schritt 2
Das addColumn() Methode erfordert einen Tabellennamen und ein Objekt von HColumnDescriptorKlasse. Instanziieren Sie daher dieHColumnDescriptorKlasse. Der Konstruktor vonHColumnDescriptorerfordert wiederum einen Spaltenfamiliennamen, der hinzugefügt werden soll. Hier fügen wir der vorhandenen Tabelle "Mitarbeiter" eine Spaltenfamilie mit dem Namen "contactDetails" hinzu.
// Instantiating columnDescriptor object
HColumnDescriptor columnDescriptor = new
HColumnDescriptor("contactDetails");
Schritt 3
Fügen Sie die Spaltenfamilie mit hinzu addColumnMethode. Übergeben Sie den Tabellennamen und dieHColumnDescriptor Klassenobjekt als Parameter für diese Methode.
// Adding column family
admin.addColumn("employee", new HColumnDescriptor("columnDescriptor"));
Im Folgenden finden Sie das vollständige Programm zum Hinzufügen einer Spaltenfamilie zu einer vorhandenen Tabelle.
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");
}
}
Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.
$javac AddColumn.java
$java AddColumn
Die obige Kompilierung funktioniert nur, wenn Sie den Klassenpfad in „ .bashrc”. Wenn nicht, befolgen Sie die unten angegebenen Schritte, um Ihre .java-Datei zu kompilieren.
//if "/home/home/hadoop/hbase " is your Hbase home folder then.
$javac -cp /home/hadoop/hbase/lib/*: Demo.java
Wenn alles gut geht, wird die folgende Ausgabe erzeugt:
column added
Löschen einer Spaltenfamilie mithilfe der Java-API
Mit der Methode können Sie eine Spaltenfamilie aus einer Tabelle löschen deleteColumn() von HBAseAdminKlasse. Führen Sie die folgenden Schritte aus, um einer Tabelle eine Spaltenfamilie hinzuzufügen.
Schritt 1
Instanziieren Sie die HBaseAdmin Klasse.
// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();
// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);
Schritt 2
Fügen Sie die Spaltenfamilie mit hinzu deleteColumn()Methode. Übergeben Sie den Tabellennamen und den Spaltenfamiliennamen als Parameter an diese Methode.
// Deleting column family
admin.deleteColumn("employee", "contactDetails");
Im Folgenden finden Sie das vollständige Programm zum Löschen einer Spaltenfamilie aus einer vorhandenen Tabelle.
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");
}
}
Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.
$javac DeleteColumn.java
$java DeleteColumn
Folgendes sollte die Ausgabe sein:
column deleted