HBase-kyselyesimerkki: put(), get() ja scan() -komennot
⚡ Älykäs yhteenveto
HBase-komennot put, get ja scan ovat datan kirjoittamisen ja lukemisen ydinkomentoja. Niiden avulla voit tallentaa solun arvon rivi- ja sarakekohtaisesti, hakea yhden rivin tai selata useita rivejä komentotulkissa tai Java API.

Kirjoita tiedot HBase-taulukkoon: Shell
Näissä esimerkeissä oletetaan, että HBase on asennettu ja käynnissä, HBase-kuori on auki ja a taulukko nimeltä guru99 on jo olemassa perheet, koulutus ja projektit -sarakkeessa.
Put-komentoa käytetään tietojen tallentamiseen taulukkoon.
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Tätä komentoa käytetään seuraaviin asioihin:
- Se asettaa solun "arvon" määritettyyn tai määritettyyn taulukkoon tai riviin tai sarakkeeseen.
- Se koordinoi valinnaisesti aikaleiman.
Esimerkiksi tässä sijoitamme arvoja taulukkoon “guru99” riville r1 ja sarakkeeseen c1:
hbase> put 'guru99', 'r1', 'c1', 'value', 10
Olemme sijoittaneet kolme arvoa, 10, 15 ja 30, taulukkoon “guru99”, kuten alla olevassa kuvakaappauksessa näkyy.
Oletetaan, että taulukolla ”guru99” on taulukkoviittaus, kuten g. Voit myös suorittaa komennon taulukkoviittaukselle seuraavasti:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
Tuloste näyttää yllä olevan kuvakaappauksen kaltaiselta, kun arvot on asetettu "guru99":ään.
Lue tiedot HBase-taulukosta: Shell
Tässä osiossa tarkistamme seuraavat asiat HBase-kuori:
- HBase-taulukkoon “guru99” lisätyt arvot.
- Sarakkeiden nimet ja niiden arvot ovat HBase-taulukossa guru99.
Alla oleva skannaustulos listaa kaikki "guru99":ään lisätyt arvot sekä niiden rivi- ja sarakenimet:
Yllä olevasta kuvakaappauksesta voimme päätellä seuraavaa:
- Jos suoritamme "scan"-komennon HBase-kuoressa, se näyttää "guru99":ään lisätyt arvot seuraavasti.
- HBase-komennossa se näyttää koodimme lisäämät arvot sarake- ja rivinimineen.
- Tässä näemme lisättyjen sarakkeiden nimet ovat ”koulutus” ja ”projektit”.
- Mainittuihin sarakkeisiin lisätyt arvot ovat ”BigData” ja ”HBase Tutorials”.
Voit myös käyttää get-komentoa tietojen lukemiseen taulukosta.
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Tässä lisäparametreja ovat TIMERANGE, TIMESTAMP, VERSIONS ja FILTERS. Tällä komennolla saat taulukossa olevan rivin tai solun sisällön. Voit lisätä lisäparametreja, kuten TIMESTAMP, TIMERANGE, VERSIONS tai FILTERS, hakeaksesi tietyn rivin tai solun sisällön. Alla oleva taulukko esittää yhteenvedon näistä parametreista:
| Parametri | Tarkoitus |
|---|---|
| AIKAVÄLI | Palauttaa solut, joiden aikaleima osuu aloitus- ja lopetusajan väliin. |
| AIKALEIMA | Palauttaa vain tarkalla aikaleimalla tallennetun soluversion. |
| VERSIOISTA | Määrittää, kuinka monta solun versiota palautetaan (oletusarvo on 1). |
| SUODATTIMET | Käyttää suodatinta, joka rajoittaa palautettavien rivien tai sarakkeiden määrää. |
| KOLUMNI | Rajoittaa tuloksen tiettyihin sarakeperheisiin tai tarkenteisiin. |
Tässä on joitakin toimivia esimerkkejä get-komennon käytöstä:
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Taulukolle ”guru99” rivin r1 ja sarakkeen c1 arvot näytetään tällä komennolla, kuten alla olevassa kuvakaappauksessa näkyy.
hbase> get 'guru99', 'r1'
Taulukon ”guru99” rivin r1 arvot näytetään tällä komennolla.
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Taulukolle ”guru99” rivin r1 arvot aikavälillä ts1–ts2 näytetään tällä komennolla.
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Taulukolle ”guru99” rivin r1 ja sarakeperheiden c1, c2 ja c3 arvot näytetään tällä komennolla.
Kirjoita tiedot HBase-taulukkoon: JAVA API
Tässä vaiheessa kirjoitamme tietoja HBase-taulukkoon “guru99”.
Ensin meidän on kirjoitettava koodia arvojen lisäämiseksi ja hakemiseksi HBase-tietokannasta käyttämällä HBaseLoading.java-ohjelmaa. Arvojen luomiseksi ja lisäämiseksi taulukkoon saraketasolla koodataan alla olevan mukaisesti.
Alla oleva kuvakaappaus näyttää Java koodi, joka rakentaa HBase-kokoonpanon ja lisää arvot “guru99”:ään:
Yllä olevasta kuvakaappauksesta:
- Kun luomme HBase-kokoonpanon, se viittaa kaikkiin kokoonpanoihin, jotka määritimme hbase-site.xml- ja hbase-default.xml-tiedostoissa HBase-asennuksen aikana.
- Taulukon “guru99” luonti HTable-metodilla.
- Lisätään rivi 1 taulukkoon “guru99”.
- Määrittämällä sarakenimet ”koulutus” ja ”projektit” ja lisäämällä arvot sarakenimiin vastaavilla riveillä 1. Tähän lisättävät arvot ovat BigData ja ”HBase-oppaat”.
Lue tiedot HBase-taulukosta: Java API
Mitä tahansa arvoja sijoitimme HBase-taulukkoon yllä olevassa osiossa, tässä haemme ja näytämme kyseiset arvot.
Alla oleva konsolin tuloste näyttää HBase-taulukosta “guru99” luettavat tiedot:
"guru99"-kansioon tallennettujen tulosten hakeminen:
- Tässä haemme sarakeperheisiin, eli "koulutus" ja "projektit", tallennetut arvot.
- Käyttämällä "get"-komentoa noudamme HBase-taulukkoon tallennetut arvot.
- Tulosten skannaus komennolla ”scan”. Riville 1 tallennetut arvot näkyvät konsolissa.
Kun koodi on kirjoitettu, suoritat komennon Java hakemus kuten tämä:
Napsauta hiiren kakkospainikkeella HBaseLoading.java-tiedostoa -> Suorita nimellä -> Java Sovellus.
Kun ”HBaseLoading.java” on suoritettu, arvot lisätään ”guru99”:n jokaiseen HBase-sarakkeeseen, ja samassa ohjelmassa se voi myös hakea arvoja.
Tässä on täydellinen koodi:
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(); } } }
Huomautus API-versioista: Yllä olevassa esimerkissä käytetään HTable-luokkaa ja sen add()-metodia, jotka heijastavat vanhempaa HBase-asiakasohjelman API:a. HBase 1.0:sta lähtien HTable on vanhentunut. Nykyaikainen koodi hakee taulukon ConnectionFactory.createConnection(…).getTable(…)-metodilla ja muodostaa Put-taulukon addColumn()-metodilla add()-metodin sijaan. Put-, get- ja scan-metodien logiikka pysyy samana.





