HBase Tabelle erstellen mit Java API- und Shell-Beispiel

โšก Intelligente Zusammenfassung

HBase speichert Daten in Tabellen, und diese Tabellen kรถnnen auf zwei Arten erstellt und verwaltet werden: รผber die Java API mit HTableDescriptoder und HBaseAdmin, oder direkt in der HBase-Shell mit dem Befehl create.

  • โ˜• Java API: Tabellen im Code mit HTable erstellenDescriptoder HColumnDescriptoder, und HBaseAdmin.
  • ๐Ÿš Shell erstellen: Der Befehl CREATE erstellt eine Tabelle aus einem Namen und einer oder mehreren Spaltenfamilien.
  • ๐Ÿงฌ Spaltenfamilien: Jede Tabelle benรถtigt mindestens eine Spaltenfamilie, die bei der Erstellung der Tabelle definiert wird.
  • ๐Ÿ”ง Tabellen รคndern: Der Befehl ALTER fรผgt Spaltenfamilien hinzu, legt VERSIONEN fest oder รคndert Attribute mit Tabellenbereich.
  • ๐Ÿ—‘๏ธ Tabellenlebenszyklus: Deaktivieren Sie eine Tabelle, bevor Sie sie รคndern oder lรถschen, und aktivieren Sie sie anschlieรŸend wieder, um die Schreibvorgรคnge fortzusetzen.
  • ๐Ÿค– KI-Unterstรผtzung: KI-Assistenten entwerfen Befehle zum Erstellen, ร„ndern und Lรถschen und รผberprรผfen das Design von Spaltenfamilien.

HBase Tabelle erstellen mit Java API- und Shell-Befehlsbeispiel

So erstellen Sie eine Tabelle in HBase mit Java API

In HBase kรถnnen Tabellen auf zwei Arten erstellt werden: รผber die Java API und รผber die HBase-Shell. Dieser Abschnitt behandelt die Java API, die es einer Anwendung ermรถglicht, Tabellen zu erstellen und Daten programmatisch im Rahmen eines grรถรŸeren Auftrags zu laden.

Durch Java API kรถnnen wir Tabellen in HBase erstellen und auch Daten in Tabellen laden mit Java Programmierung. Die beiden Dinge, die wir hier einrichten, sind:

  • Herstellen einer Verbindung mit HBase รผber Java API.
  • Die Verwendung von Eclipse fรผr Java Codierung, Fehlersuche und Tests.

Im Folgenden finden Sie die Schritte zum Erstellen von Tabellen in HBase durch Java API.

Schritt 1) Erstellen Sie eine Java Projekt in Eclipse

In diesem Schritt erstellen wir eine Java Projekt in Eclipse fรผr die HBase-Verbindung mit dem Namen โ€žHbaseConnectionโ€œ.

The New Java Im folgenden Projektdialog wird die Einrichtung des Projekts โ€žHbaseConnectionโ€œ angezeigt:

Eclipse New Java Projektdialog zum Erstellen des HbaseConnection-Projekts mit einem JavaSE-1.7-Umgebung

Betrachten wir den obigen Screenshot:

  • Geben Sie in diesem Feld den Projektnamen ein. In unserem Fall lautet der Projektname โ€žHbaseConnectionโ€œ.
  • Aktivieren Sie dieses Kontrollkรคstchen, um den Standardspeicherort festzulegen. Hier ist /home/hduser/work/HbaseConnection der Pfad.
  • Kreuzen Sie das Kรคstchen an bei Java Umgebung hier. In diesem Fall JavaSE-1.7 ist der Java Ausgabe.
  • Wรคhlen Sie die Option fรผr den Speicherort der Datei. In unserem Fall haben wir die zweite Option gewรคhlt: โ€žEinen separaten Ordner fรผr Quell- und Klassendateien erstellenโ€œ.
  • Klicken Sie auf die Schaltflรคche โ€žFertigstellenโ€œ. Dadurch wird das Projekt โ€žHbaseConnectionโ€œ erstellt. Eclipse und รถffnet die Eclipse Startseite.

Schritt 2) Konfigurieren Sie den Build-Pfad in Eclipse

Auf dem Eclipse Folgen Sie diesen Schritten, um die Build-Pfad-Konfiguration zu รถffnen:

Right click on project -> Select Build Path -> Configure build path

Der folgende Screenshot zeigt das Kontextmenรผ (Rechtsklickmenรผ), mit dem die Konfiguration des Build-Pfads geรถffnet werden kann:

Eclipse Klicken Sie mit der rechten Maustaste auf das Projekt und wรคhlen Sie โ€žBuild Pathโ€œ und anschlieรŸend โ€žConfigure Build Pathโ€œ.

Aus dem obigen Screenshot:

  • Klicken Sie mit der rechten Maustaste auf ein Projekt.
  • Build-Pfad auswรคhlen.
  • Wรคhlen Sie โ€žBuildpfad konfigurierenโ€œ.

Nach dem Klicken auf โ€žBuildpfad konfigurierenโ€œ รถffnet sich ein weiteres Fenster, wie im folgenden Screenshot dargestellt. Auf der Registerkarte โ€žBibliothekenโ€œ werden die HBase- und Hadoop-JAR-Dateien zum Projekt hinzugefรผgt:

Eclipse Java Registerkarte โ€žBuild Path Librariesโ€œ: Hinzufรผgen externer HBase- und Hadoop-JAR-Dateien

In diesem Schritt fรผgen wir die entsprechenden HBase-JAR-Dateien hinzu. Java Das Projekt sieht aus wie im Screenshot dargestellt.

  • Wichtige hinzuzufรผgende JAR-Dateien: hbase-0.94.8.jar und hadoop-core-1.1.2.jar.
  • Wechseln Sie zum Reiter โ€žBibliothekenโ€œ.
  • Drรผcken Sie die Option "Externe JAR-Dateien hinzufรผgen".
  • Wรคhlen Sie die erforderlichen wichtigen JAR-Dateien aus.
  • Drรผcken Sie die Schaltflรคche โ€žFertigstellenโ€œ, um diese Dateien zum โ€žsrcโ€œ-Verzeichnis hinzuzufรผgen. Java Projekt im Rahmen der Bibliotheken.

Nach dem Hinzufรผgen der JAR-Dateien erscheinen sie im Projektverzeichnis โ€žsrcโ€œ, wie unten dargestellt:

Eclipse Der Projekt-Explorer zeigt die hinzugefรผgten HBase- und Hadoop-JAR-Dateien unter dem Projektquellcode an.

Alle JAR-Dateien, die zu diesem Projekt gehรถren, sind nun fรผr die Verwendung mit dem Hadoop-ร–kosystem bereit.

Schritt 3) Stellen Sie die HBase-Verbindung her

In diesem Schritt wird mithilfe von HBaseConnection.java die HBase-Verbindung hergestellt. Java Codierung.

Auf dem Eclipse oberstes Menรผ, ausfรผhren Java Programm wie unten gezeigt: Ausfรผhren -> Ausfรผhren als -> Java Anwendung. Das folgende Menรผ zeigt den Programmstart an:

Eclipse Rennen wie Java Das Anwendungsmenรผ startet das Programm HBaseConnection.

  • Wรคhlen Sie Ausfรผhren.
  • Wรคhlen Sie โ€žAusfรผhren alsโ€œ Java Anwendung.
  • Dieser Code stellt eine Verbindung zu HBase her รผber Java API.
  • Nach Ausfรผhrung dieses Codes wird in HBase die Tabelle โ€žguru99โ€œ mit zwei Spaltenfamilien namens โ€žeducationโ€œ und โ€žprojectsโ€œ erstellt. Aktuell existiert in HBase lediglich ein leeres Schema.

Der folgende Codeausschnitt hebt die HTable hervor.Descriptoder und addFamily-Aufrufe, die das Tabellenschema erstellen:

Java Code mit HTableDescriptoder und addFamily, um die Tabelle guru99 mit den Spaltenfamilien Ausbildung und Projekte zu definieren

Aus dem obigen Screenshot geht hervor, dass wir folgende Funktionen ausfรผhren:

  • Verwenden von HTableDescriptOder wir kรถnnen die Tabelle โ€žguru99โ€œ in HBase erstellen.
  • Mit der Methode addFamily fรผgen wir der Tabelle โ€žguru99โ€œ die Spaltenfamilien โ€žeducationโ€œ und โ€žprojectsโ€œ hinzu.

Der folgende Code stellt eine Verbindung zu HBase her und erstellt die Tabelle โ€žguru99โ€œ mit zwei Spaltenfamilien. Fรผgen Sie diesen Code unterhalb der Datei HBaseConnection.java ein:

// Place this code inside Hbase connection
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.HTableDescriptor;
Import org.apache.hadoop.hbase.client.HBaseAdmin;

public class HBaseConnection
{
    public static void main(String[] args) throws IOException
    {
	HBaseConfigurationhc = new HBaseConfiguration(new Configuration());
	HTableDescriptorht = new HTableDescriptor("guru99");

	ht.addFamily( new HColumnDescriptor("education"));
	ht.addFamily( new HColumnDescriptor("projects"));
	System.out.println( "connecting" );
	HBaseAdminhba = new HBaseAdmin( hc );

	System.out.println( "Creating Table" );
	hba.createTable( ht );
	System.out.println("Done......");
    }
}

Dies ist der erforderliche Code, den Sie in HBaseConnection.java einfรผgen mรผssen, bevor Sie das Programm ausfรผhren. Java

Nach dem Ausfรผhren dieses Programms wird eine Verbindung zu HBase hergestellt und anschlieรŸend eine Tabelle mit Spaltennamen erstellt.

  • Der Tabellenname lautet โ€žguru99โ€œ.
  • Die Spaltenfamilien sind โ€žBildungโ€œ und โ€žProjekteโ€œ.

Schritt 4) รœberprรผfen Sie die erstellte Tabelle in HBase

Wir kรถnnen mithilfe des Befehls โ€žlistโ€œ im HBase-Shell-Modus รผberprรผfen, ob die Tabelle โ€žguru99โ€œ in HBase mit zwei Spaltenfamilien erstellt wurde. Der Befehl โ€žlistโ€œ liefert Informationen รผber alle in HBase erstellten Tabellen.

Die Ausfรผhrung des Befehls โ€žlistโ€œ in der HBase-Shell bestรคtigt die neue Tabelle, wie unten dargestellt:

Die Ausgabe des HBase-Shell-Befehls โ€žlistโ€œ zeigt, dass die Tabelle โ€žguru99โ€œ erstellt wurde.

  • Code รœberprรผfen Sie dies in der HBase-Shell durch Ausfรผhren des Befehls โ€žlistโ€œ.
  • Wenn wir den Befehl โ€žlistโ€œ ausfรผhren, werden die in HBase erstellten Tabellen angezeigt. In unserem Fall sehen wir, dass die Tabelle โ€žguru99โ€œ erstellt wurde.

HBase Tabelle mit Shell erstellen

Neben dem Java รœber die API kรถnnen Sie direkt in der HBase-Shell eine Tabelle erstellen. Dies ist der schnellste Weg, eine Tabelle fรผr schnelle Tests einzurichten. Die Syntax zum Erstellen einer Tabelle in HBase รผber die Shell lautet:

Syntax: create <tablename>, <columnfamilyname>

Beispiel:-

hbase(main):001:0> create 'education' ,'guru99'
0 rows(s) in 0.312 seconds
=>Hbase::Table โ€“ education

Das obige Beispiel erklรคrt, wie man in HBase eine Tabelle mit dem angegebenen Namen gemรครŸ den Spezifikationen fรผr jede Spaltenfamilie erstellt. Zusรคtzlich kรถnnen wir ihr auch Tabellenattribute รผbergeben.

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}

Der Block {NAME=>'Edu', VERSIONS=>โ€ฆ} definiert hier eine Spaltenfamilie namens โ€žEduโ€œ und die Anzahl der gespeicherten Zellversionen. Die hohe Zahl dient nur der Veranschaulichung; in der Praxis ist VERSIONS ein kleiner Wert wie 3 oder 5.

HBase-Tabellen auflisten, beschreiben und รผberprรผfen

Das Erstellen einer Tabelle ist nur der erste Schritt bei der Tabellenverwaltung in HBase. Sobald die Tabelle โ€žguru99โ€œ existiert, kรถnnen Sie sie mit einigen allgemeinen Befehlen รผberprรผfen und ihren Zustand bestรคtigen, bevor Sie Daten lesen, schreiben oder รคndern. Sie kรถnnen alle diese Befehle รผber die Benutzeroberflรคche ausfรผhren. HBase-Shell.

Der Befehl โ€žlistโ€œ gibt alle Benutzertabellen in HBase zurรผck:

hbase> list

Der Befehl โ€ždescribeโ€œ zeigt die Struktur einer Tabelle an, einschlieรŸlich ihrer Spaltenfamilien und ob sie aktuell aktiviert ist:

hbase> describe 'guru99'

Der Befehl exists prรผft, ob eine Tabelle vorhanden ist, und is_enabled meldet, ob die Tabelle Schreibvorgรคnge akzeptieren kann:

hbase> exists 'guru99'
hbase> is_enabled 'guru99'

Diese schreibgeschรผtzten Prรผfungen kรถnnen jederzeit sicher ausgefรผhrt werden. Sie sind der schnellste Weg, um zu bestรคtigen, dass eine Tabelle korrekt erstellt wurde und um ihre Spaltenfamilien vor dem Laden von Daten zu รผberprรผfen.

ร„ndern einer HBase-Tabelle

Das Schema einer HBase-Tabelle ist nach der Erstellung nicht unverรคnderlich. Der Befehl `alter` รคndert die Spaltenfamilien und Tabellenattribute einer Tabelle, ohne sie neu zu erstellen. Je nach Ihrer HBase-Version mรผssen Sie die Tabelle mรถglicherweise zuerst deaktivieren, dann `alter` ausfรผhren und sie anschlieรŸend wieder aktivieren.

So fรผgen Sie der Tabelle โ€žguru99โ€œ eine neue Spaltenfamilie hinzu:

hbase> alter 'guru99', {NAME => 'contact'}

So legen Sie fest, wie viele Versionen eine Spaltenfamilie speichert:

hbase> alter 'guru99', NAME => 'education', VERSIONS => 5

So lรถschen Sie eine Spaltenfamilie aus der Tabelle:

hbase> alter 'guru99', {NAME => 'contact', METHOD => 'delete'}

Sie kรถnnen auch Tabellenattribute รคndern. Beispielsweise kรถnnen Sie die Tabelle als schreibgeschรผtzt markieren oder die maximale RegionsdateigrรถรŸe auf 128 MB festlegen:

hbase> alter 'guru99', READONLY
hbase> alter 'guru99', MAX_FILESIZE => '134217728'

Da der Befehl ALTER das Schema รผberschreibt, sollten ร„nderungen sorgfรคltig an einer Produktionstabelle geplant und das Ergebnis anschlieรŸend mit dem Befehl DESCRIBE bestรคtigt werden.

HBase-Tabellen deaktivieren, aktivieren und lรถschen

Um eine Tabelle zu entfernen oder bestimmte ร„nderungen vorzunehmen, mรผssen Sie diese in HBase zunรคchst deaktivieren. Durch die Deaktivierung wird die Tabelle offline genommen, sodass kein Client mehr darauf zugreifen kann. Dadurch werden strukturelle ร„nderungen sicher.

Eine Tabelle deaktivieren und ihren Status mit is_disabled รผberprรผfen:

hbase> disable 'guru99'
hbase> is_disabled 'guru99'

Aktivieren Sie die Tabelle erneut, um Lese- und Schreibvorgรคnge fortzusetzen:

hbase> enable 'guru99'

Eine Tabelle muss deaktiviert werden, bevor sie gelรถscht werden kann. Lรถschenping Lรถscht die Tabelle und alle darin enthaltenen Daten endgรผltig, daher mit Vorsicht verwenden:

hbase> disable 'guru99'
hbase> drop 'guru99'

Um mehrere Tabellen gleichzeitig zu entfernen, lรถscht `drop_all` alle Tabellen, deren Name einem regulรคren Ausdruck entspricht. Zusammen decken `create`, `alter`, `disable`, `enable` und `drop` den gesamten Lebenszyklus einer Tabelle ab. Datenverarbeitung in HBase-Tabellen.

Hรคufig gestellte Fragen

Es empfiehlt sich, die Anzahl der Spaltenfamilien gering zu halten, idealerweise auf ein bis drei. HBase speichert und komprimiert alle Familien einer Region gemeinsam, sodass zusรคtzliche Familien die Daten auf mehr Dateien verteilen und Lese- und Schreibvorgรคnge verlangsamen. Gruppieren Sie verwandte Spalten nach Mรถglichkeit in einer einzigen Familie.

Nein. Bei der Erstellung definieren Sie lediglich Spaltenfamilien. Spaltenqualifizierer sind dynamisch und kรถnnen beim Schreiben von Daten in jeder Zeile hinzugefรผgt werden. Dank dieses flexiblen Schemas kann jede Zeile unterschiedliche Spalten enthalten, ohne dass die Tabelle vorher geรคndert werden muss.

Verwenden Sie `truncate 'guru99'`, um die Tabelle zu deaktivieren, zu lรถschen und mit denselben Spaltenfamilien neu zu erstellen. Das Schema bleibt dabei erhalten, wรคhrend jede Zeile entfernt wird. Dies ist schneller und sauberer als das Lรถschen einzelner Zeilen.

Das Beispiel verwendet HBaseAdmin und HTable.DescriptOder beides ist seit HBase 1.0 veraltet. Moderner Code bezieht ein Admin-Objekt von einer Verbindung รผber die ConnectionFactory und erstellt das Schema mit der Tabelle.DescriptoderBuilder und ColumnFamilyDescriptoderBuilder. Die Logik zur Tabellenerstellung bleibt gleich.

VERSIONS legt fest, wie viele zeitgestempelte Versionen jeder Zelle eine Spaltenfamilie speichert. Der Standardwert ist 1. ร„ltere Versionen werden per GET oder SCAN angefordert und zurรผckgegeben, bis die festgelegte Anzahl erreicht ist. AnschlieรŸend werden die รคltesten Zellen durch Komprimierung entfernt.

HBase eignet sich fรผr sehr groรŸe, spรคrlich besetzte Datensรคtze, die schnelle, wahlfreie Lese- und Schreibvorgรคnge auf Hadoop und HDFS erfordern. Typische Anwendungsfรคlle sind Zeitreihendaten, Messaging und Echtzeitanalysen, bei denen Tabellen auf Milliarden von Zeilen รผber viele Knoten hinweg anwachsen.

KI-Programmierassistenten und groรŸe Sprachmodelle entwerfen Befehle zum Erstellen, ร„ndern und Lรถschen anhand von Klartext-Eingaben, erklรคren das Spaltenfamilien-Design und kennzeichnen riskante Operationen wie das Lรถschen von Elementen.ping Eine Tabelle. Maschinelles Lernen kann auch Zugriffsmuster analysieren, um bessere Zeilentasten- und Familienlayouts zu empfehlen, wobei jedoch jeder Vorschlag von einem Ingenieur รผberprรผft werden sollte.

Ja. GitHub-Copilot kann HBase-Shell-Befehle generieren und Java Clientcode zum Erstellen, ร„ndern und Lรถschenping Tabellen aus einem kurzen Kommentar. Revรœberprรผfen Sie vor der Ausfรผhrung die Ausgabe auf den korrekten Tabellennamen, die Spaltenfamilien und die aktuelle Admin-API.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: