Beispiel für eine HBase-Abfrage: Befehl put(), get(), scan() in HBase
Daten in die HBase-Tabelle schreiben: Shell
Der Befehl put wird zum Speichern von Daten in einer Tabelle verwendet
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Dieser Befehl wird für die folgenden Dinge verwendet
- Es wird einen Zellwert in eine definierte oder angegebene Tabelle, Zeile oder Spalte einfügen.
- Optional wird ein Zeitstempel koordiniert.
Ejemplo:
- Hier platzieren wir Werte in der Tabelle „guru99“ unter Zeile r1 und Spalte c1
hbase> put 'guru99', 'r1', 'c1', 'value', 10
- Wir haben drei Werte, 10,15 und 30, in die Tabelle „guru99“ eingefügt, wie im Screenshot unten gezeigt
- Angenommen, die Tabelle „Guru99“ hat eine Tabellenreferenz wie beispielsweise g. Wir können den Befehl auch gerne auf Tabellenreferenzen ausführen
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
- Die Ausgabe wird wie im obigen Screenshot gezeigt aussehen, nachdem Werte in „guru99“ eingegeben wurden.
Daten aus der HBase-Tabelle lesen: Shell
In diesem Abschnitt überprüfen wir Folgendes
- Werte, die in die HBase-Tabelle „guru99“ eingefügt werden
- Spaltennamen mit Werten in der HBase-Tabelle guru99
Aus dem obigen Screenshot können wir schließen
- Wenn wir den Befehl „scan“ in der HBase-Shell ausführen, werden die eingefügten Werte in „guru99“ wie folgt angezeigt
- In der HBase-Shell werden von unserem Code eingefügte Werte mit Spalten- und Zeilennamen angezeigt
- Hier können wir sehen, dass die eingefügten Spaltennamen „Bildung“ und „Projekte“ sind.
- Die eingefügten Werte sind „Bigdata” und „HBase-Tutorials“ in die genannten Spalten
Sie können den Get-Befehl auch verwenden, um Daten aus einer Tabelle zu lesen
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Hier umfassen TIMERANGE, TIMESTAMP, VERSIONS und FILTER.
Mit diesem Befehl erhalten Sie einen in der Tabelle vorhandenen Zeilen- oder Zelleninhalt. Darüber hinaus können Sie zusätzliche Parameter wie TIMESTAMP, TIMERANGE, VERSIONS, FILTERS usw. hinzufügen, um einen bestimmten Zeilen- oder Zelleninhalt zu erhalten.
Beispiele:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Für die Tabelle „guru99“ werden die Werte für Zeile r1 und Spalte c1 mit diesem Befehl angezeigt, wie im obigen Screenshot gezeigt
hbase> get 'guru99', 'r1'
Für die Tabelle „guru99“ werden die Werte der Zeile r1 mit diesem Befehl angezeigt
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Für die Tabelle „guru99“ werden mit diesem Befehl die Werte der Zeile 1 im Zeitbereich ts1 und ts2 angezeigt
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Für die Tabelle „guru99“ werden die Werte der Zeile r1 und der Spaltenfamilien c1, c2, c3 mit diesem Befehl angezeigt
Daten in die HBase-Tabelle schreiben: JAVA API
In diesem Schritt schreiben wir Daten in die HBase-Tabelle „guru99“.
Zuerst müssen wir Code zum Einfügen und Abrufen von Werten aus HBase schreiben, indem wir Folgendes verwenden:HBaseLoading.java-Programm.
Zum Erstellen und Einfügen von Werten in eine Tabelle auf Spaltenebene müssen Sie den folgenden Code verwenden.
Aus dem obigen Screenshot
- Wenn wir eine HBase-Konfiguration erstellen, verweist diese auf alle Konfigurationen, die wir dabei in den Dateien base-site.xml und hbase-default.xml festgelegt haben HBase-Installationen
- Erstellung der Tabelle „guru99“ mit der HTable-Methode
- Zeile 1 zur Tabelle „guru99“ hinzufügen
- Angabe der Spaltennamen „Bildung“ und „Projekte“ und Einfügen von Werten in die Spaltennamen in der jeweiligen Zeile1. Die hier eingefügten Werte sind „BigData“ und „HBaseTutorials“.
Daten aus HBase-Tabelle lesen: Java API
Unabhängig von den Werten, die wir im obigen Abschnitt in HBase-Tabellen platziert haben, werden wir diese Werte hier abrufen und anzeigen.
Zum Abrufen der in „guru99“ gespeicherten Ergebnisse
Der obige Screenshot zeigt, dass die Daten aus der HBase-Tabelle „guru99“ gelesen werden.
- Hier werden wir die Werte abrufen, die in Spaltenfamilien gespeichert sind, z. B. „Bildung“ und „Projekte“.
- Mit dem Befehl „get“ rufen wir gespeicherte Werte in der HBase-Tabelle ab
- Scan-Ergebnisse mit dem Befehl „scan“. Die in Zeile 1 gespeicherten Werte werden auf der Konsole angezeigt.
Sobald Sie mit dem Schreiben des Codes fertig sind, müssen Sie ihn ausführen Java Anwendung wie diese
- Klicken Sie mit der rechten Maustaste auf HBaseLoading.java -> Rennen wie -> Java Anwendungsbereiche
- Nach dem Ausführen von „HBaseLoading .java“ werden die Werte in jede Spalte in HBase in „guru99“ eingefügt und im selben Programm können auch Werte abgerufen werden.
Hier ist der vollständige Code
import java.io.IOException; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.util.Bytes; public class HBaseLoading { public static void main(String[] args) throws IOException { /* When you create a HBaseConfiguration, it reads in whatever you've set into your hbase-site.xml and in hbase-default.xml, as long as these can be found on the CLASSPATH*/ org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create(); /*This instantiates an HTable object that connects you to the "test" table*/ HTable table = new HTable(config, "guru99"); /* To add to a row, use Put. A Put constructor takes the name of the row you want to insert into as a byte array.*/ Put p = new Put(Bytes.toBytes("row1")); /*To set the value you'd like to update in the row 'row1', specify the column family, column qualifier, and value of the table cell you'd like to update. The column family must already exist in your table schema. The qualifier can be anything.*/ p.add(Bytes.toBytes("education"), Bytes.toBytes("col1"),Bytes.toBytes("BigData")); p.add(Bytes.toBytes("projects"),Bytes.toBytes("col2"),Bytes.toBytes("HBaseTutorials")); // Once you've adorned your Put instance with all the updates you want to make, to commit it do the following table.put(p); // Now, to retrieve the data we just wrote. Get g = new Get(Bytes.toBytes("row1")); Result r = table.get(g); byte [] value = r.getValue(Bytes.toBytes("education"),Bytes.toBytes("col1")); byte [] value1 = r.getValue(Bytes.toBytes("projects"),Bytes.toBytes("col2")); String valueStr = Bytes.toString(value); String valueStr1 = Bytes.toString(value1); System.out.println("GET: " +"education: "+ valueStr+"projects: "+valueStr1); Scan s = new Scan(); s.addColumn(Bytes.toBytes("education"), Bytes.toBytes("col1")); s.addColumn(Bytes.toBytes("projects"), Bytes.toBytes("col2")); ResultScanner scanner = table.getScanner(s); try { for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { System.out.println("Found row : " + rr); } } finally { // Make sure you close your scanners when you are done! scanner.close(); } } }
Zusammenfassung
Wie wir in diesem Tutorial besprochen haben, können Sie den Befehl put verwenden, um Daten in eine Tabelle einzufügen. Mit dem Befehl scan, get können Sie Daten aus einer Tabelle lesen