Exemplu de interogare HBase: comenzi put(), get() și scan()
⚡ Rezumat inteligent
Comenzile put, get și scan din HBase sunt comenzile principale pentru scrierea și citirea datelor, permițându-vă să stocați valoarea unei celule pe rând și coloană, să preluați un singur rând sau să răsfoiți mai multe rânduri din shell sau Java API-ul.

Scrieți date în tabelul HBase: Shell
Aceste exemple presupun că HBase este instalat și rulează, shell-ul HBase este deschis și a tabel numit guru99 există deja cu coloanele familii educație și proiecte.
Comanda put este utilizată pentru stocarea datelor într-un tabel.
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Această comandă este utilizată pentru următoarele lucruri:
- Acesta va pune o „valoare” celulei la un tabel, rând sau coloană definit sau specificat.
- Opțional, va coordona o marcă temporală.
De exemplu, aici plasăm valori în tabelul „guru99” sub rândul r1 și coloana c1:
hbase> put 'guru99', 'r1', 'c1', 'value', 10
Am plasat trei valori, 10, 15 și 30, în tabelul „guru99”, așa cum se arată în captura de ecran de mai jos.
Să presupunem că tabelul „guru99” are o referință de tabel, cum ar fi g. De asemenea, puteți rula comanda pe referința tabelului, astfel:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
Rezultatul apare așa cum se arată în captura de ecran de mai sus după plasarea valorilor în „guru99”.
Citiți datele din tabelul HBase: Shell
În această secțiune, verificăm următoarele aspecte din Carcasa HBase:
- Valorile care sunt inserate în tabelul HBase „guru99”.
- Numele coloanelor cu valorile prezente în tabelul HBase guru99.
Rezultatul scanării de mai jos listează fiecare valoare inserată în „guru99”, împreună cu numele rândurilor și coloanelor sale:
Din captura de ecran de mai sus, putem deduce următoarele:
- Dacă rulăm comanda „scan” în shell-ul HBase, aceasta va afișa valorile inserate în „guru99” după cum urmează.
- În shell-ul HBase, se vor afișa valorile inserate de codul nostru, împreună cu numele coloanelor și rândurilor.
- Aici putem vedea că numele coloanelor inserate sunt „educație” și „proiecte”.
- Valorile inserate în coloanele menționate sunt „BigData” și „HBase Tutorials”.
De asemenea, puteți utiliza comanda get pentru a citi date dintr-un tabel.
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Aici, parametrii suplimentari includ TIMERANGE, TIMESTAMP, VERSIONS și FILTERS. Folosind această comandă, obțineți un rând sau conținutul celulei prezente în tabel. Puteți adăuga parametri suplimentari, cum ar fi TIMESTAMP, TIMESTAMP, VERSIONS sau FILTERS, pentru a prelua conținutul unui anumit rând sau al unei celule. Tabelul de mai jos rezumă acești parametri:
| Parametru | Scop |
|---|---|
| INTERVAL DE TIMP | Returnează celulele al căror marcaj temporal se încadrează într-o oră de început și una de sfârșit. |
| TIMESTAMP-UL | Returnează doar versiunea celulei stocată la un interval de timp exact. |
| VERSIUNI | Setează câte versiuni ale unei celule să fie returnate (implicit este 1). |
| FILTRE | Aplică un filtru pentru a restricționa rândurile sau coloanele returnate. |
| COLOANA | Limitează rezultatul la anumite familii de coloane sau calificatori. |
Iată câteva exemple funcționale ale comenzii get:
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Pentru tabelul „guru99”, valorile rândului r1 și coloanei c1 vor fi afișate folosind această comandă, așa cum se arată în captura de ecran de mai jos.
hbase> get 'guru99', 'r1'
Pentru tabelul „guru99”, valorile rândului r1 vor fi afișate folosind această comandă.
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Pentru tabelul „guru99”, valorile rândului r1 din intervalul de timp ts1 până la ts2 vor fi afișate folosind această comandă.
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Pentru tabelul „guru99”, valorile rândului r1 și ale familiilor de coloane c1, c2 și c3 vor fi afișate folosind această comandă.
Scrieți date în tabelul HBase: API JAVA
În acest pas, vom scrie date în tabelul HBase „guru99”.
Mai întâi, trebuie să scriem cod pentru a insera și a recupera valori din HBase, folosind programul HBaseLoading.java. Pentru a crea și insera valori într-un tabel la nivel de coloană, codați așa cum se arată mai jos.
Captura de ecran de mai jos arată Java cod care construiește configurația HBase și inserează valori în „guru99”:
Din captura de ecran de mai sus:
- Când creăm configurația HBase, aceasta indică orice configurații am setat în fișierele hbase-site.xml și hbase-default.xml în timpul instalării HBase.
- Crearea tabelului „guru99” folosind metoda HTable.
- Se adaugă rândul 1 la tabelul „guru99”.
- Specificarea numelor coloanelor „educație” și „proiecte” și inserarea valorilor în numele coloanelor din rândul1 respectiv. Valorile inserate aici sunt BigData și „Tutoriale HBase”.
Citiți datele din tabelul HBase: Java API
Indiferent de valorile pe care le-am plasat în tabelul HBase din secțiunea de mai sus, aici le vom prelua și afișa.
Rezultatul consolei de mai jos arată datele citite din tabelul HBase „guru99”:
Pentru recuperarea rezultatelor stocate în „guru99”:
- Aici vom prelua valorile stocate în familiile de coloane, adică „educație” și „proiecte”.
- Folosind comanda „get”, vom prelua valorile stocate în tabelul HBase.
- Rezultatele scanării folosind comanda „scan”. Valorile stocate în rândul 1 vor fi afișate în consolă.
Odată ce codul este scris, rulați Java cerere asa:
Faceți clic dreapta pe HBaseLoading.java -> Executare ca -> Java Aplicație.
După rularea fișierului „HBaseLoading.java”, valorile sunt inserate în „guru99” în fiecare coloană din HBase și, în același program, se pot prelua și valori.
Iată codul complet:
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(); } } }
Notă privind versiunile API: Exemplul de mai sus folosește clasa HTable și metoda sa add(), care reflectă API-ul client HBase mai vechi. De la HBase 1.0, HTable este depreciat. Codul modern obține un Table prin ConnectionFactory.createConnection(…).getTable(…) și construiește un Put cu addColumn() în loc de add(). Logica comenzilor put, get și scan rămâne aceeași.





