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.





