Esempio di query HBase: comandi put(), get() e scan()
โก Riepilogo intelligente
HBase put, get e scan sono i comandi principali per scrivere e leggere i dati, consentendo di memorizzare il valore di una cella per riga e colonna, recuperare una singola riga o sfogliare molte righe dalla shell o Java API.

Scrivi i dati nella tabella HBase: Shell
Questi esempi presuppongono che HBase sia installato e in esecuzione, la shell HBase รจ aperta e un tabella denominata guru99 giร esiste con la colonna famiglie istruzione e progetti.
Il comando put viene utilizzato per memorizzare i dati in una tabella.
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Questo comando viene utilizzato per le seguenti operazioni:
- Verrร inserito un "valore" di cella in una tabella, riga o colonna definita o specificata.
- Puรฒ facoltativamente includere un'indicazione oraria.
Ad esempio, qui stiamo inserendo dei valori nella tabella "guru99" nella riga r1 e nella colonna c1:
hbase> put 'guru99', 'r1', 'c1', 'value', 10
Abbiamo inserito tre valori, 10, 15 e 30, nella tabella "guru99", come mostrato nello screenshot qui sotto.
Supponiamo che la tabella "guru99" abbia un riferimento di tabella, ad esempio g. ร possibile eseguire il comando anche sul riferimento di tabella, in questo modo:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
L'output appare come mostrato nello screenshot qui sopra dopo aver inserito i valori in "guru99".
Leggi i dati dalla tabella HBase: Shell
In questa sezione controlliamo quanto segue nel Guscio HBase:
- Valori inseriti nella tabella HBase "guru99".
- Nomi delle colonne con i valori presenti nella tabella HBase guru99.
L'output della scansione riportato di seguito elenca ogni valore inserito in "guru99", insieme ai relativi nomi di riga e colonna:
Dallo screenshot qui sopra possiamo dedurre quanto segue:
- Se eseguiamo il comando "scan" nella shell di HBase, i valori inseriti in "guru99" verranno visualizzati come segue.
- Nella shell di HBase, verranno visualizzati i valori inseriti dal nostro codice, con i nomi delle colonne e delle righe.
- Qui possiamo vedere che i nomi delle colonne inserite sono "istruzione" e "progetti".
- I valori inseriti nelle colonne indicate sono "BigData" e "HBase Tutorials".
ร possibile utilizzare il comando get anche per leggere i dati da una tabella.
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
In questo caso, i parametri aggiuntivi includono TIMERANGE, TIMESTAMP, VERSIONS e FILTERS. Utilizzando questo comando, รจ possibile ottenere una riga o il contenuto di una cella presente nella tabella. ร possibile aggiungere ulteriori parametri, come TIMESTAMP, TIMERANGE, VERSIONS o FILTERS, per recuperare una riga o il contenuto di una cella specifica. La tabella seguente riassume questi parametri:
| Parametro | Missione |
|---|---|
| INTERVALLO DI TEMPO | Restituisce le celle il cui timestamp rientra nell'intervallo di un orario di inizio e di fine. |
| TIMESTAMP | Restituisce solo la versione della cella memorizzata in un determinato momento. |
| VERSIONI | Imposta quante versioni di una cella restituire (il valore predefinito รจ 1). |
| FILTRI | Applica un filtro per limitare le righe o le colonne da restituire. |
| COLUMN | Limita il risultato a specifiche famiglie di colonne o qualificatori. |
Ecco alcuni esempi pratici del comando get:
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Per la tabella "guru99", i valori della riga r1 e della colonna c1 verranno visualizzati utilizzando questo comando, come mostrato nello screenshot qui sotto.
hbase> get 'guru99', 'r1'
Per la tabella "guru99", i valori della riga r1 verranno visualizzati utilizzando questo comando.
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Per la tabella "guru99", i valori della riga r1 nell'intervallo di tempo da ts1 a ts2 verranno visualizzati utilizzando questo comando.
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Per la tabella "guru99", i valori della riga r1 e delle famiglie di colonne c1, c2 e c3 verranno visualizzati utilizzando questo comando.
Scrivi dati nella tabella HBase: API JAVA
In questo passaggio, scriveremo i dati nella tabella HBase "guru99".
Innanzitutto, dobbiamo scrivere il codice per inserire e recuperare i valori da HBase, utilizzando il programma HBaseLoading.java. Per creare e inserire valori in una tabella a livello di colonna, il codice รจ il seguente.
Lo screenshot qui sotto mostra Java Codice che crea la configurazione di HBase e inserisce i valori in "guru99":
Dallo screenshot qui sopra:
- Quando creiamo la configurazione di HBase, questa fa riferimento alle configurazioni che abbiamo impostato nei file hbase-site.xml e hbase-default.xml durante l'installazione di HBase.
- Creazione della tabella "guru99" utilizzando il metodo HTable.
- Aggiunta della riga 1 alla tabella "guru99".
- Specificando i nomi delle colonne "istruzione" e "progetti" e inserendo i valori nei nomi delle colonne nella rispettiva riga1. I valori inseriti qui sono BigData e โHBaseTutorialsโ.
Leggi i dati dalla tabella HBase: Java API
Qualunque valore abbiamo inserito nella tabella HBase nella sezione precedente, qui lo recupereremo e lo visualizzeremo.
L'output della console riportato di seguito mostra i dati letti dalla tabella HBase "guru99":
Per recuperare i risultati memorizzati in "guru99":
- Qui andremo a recuperare i valori memorizzati nelle famiglie di colonne, ovvero "istruzione" e "progetti".
- Utilizzando il comando "get", recupereremo i valori memorizzati nella tabella HBase.
- Risultati della scansione tramite il comando "scan". I valori memorizzati nella riga 1 verranno visualizzati sulla console.
Una volta scritto il codice, lo esegui Java applicazione come questo:
Fare clic con il pulsante destro del mouse su HBaseLoading.java -> Esegui come -> Java Applicazione.
Dopo l'esecuzione di "HBaseLoading.java", i valori vengono inseriti in "guru99" in ogni colonna di HBase, e nello stesso programma รจ anche possibile recuperare i valori.
Ecco il codice completo:
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(); } } }
Nota sulle versioni dell'API: L'esempio precedente utilizza la classe HTable e il suo metodo add(), che riflettono la vecchia API client di HBase. Dalla versione 1.0 di HBase, HTable รจ deprecata. Il codice moderno ottiene una Table tramite ConnectionFactory.createConnection(โฆ).getTable(โฆ) e crea un Put con addColumn() invece di add(). La logica di put, get e scan rimane la stessa.





