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