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 put-komennolla: Put-komento tallentaa arvon taulukkoon, riville, sarakkeeseen ja valinnaisesti aikaleimaan.
  • ๐Ÿ” Lue komennolla get: get-komento palauttaa yhden rivin tai solun, jossa on TIMERANGE-, VERSIONS- ja FILTERS-asetukset.
  • ๐Ÿ“œ Selaa skannauksella: Skannauskomento listaa useita rivejรค ja niiden sarakearvoja taulukossa.
  • โ˜• Java API:t: Samat toiminnot suoritetaan Java kรคyttรคen Put-, Get- ja Scan-operaattoreita sekรค Bytes-apuluokkaa.
  • ๐Ÿงฌ koordinaatit: Jokaista arvoa kรคsitellรครคn riviavaimen, sarakeperheen ja saraketarkenteen avulla.
  • ๐Ÿค– Tekoรคlyn apu: Tekoรคlyavustajat luonnostelevat put-, get- ja scan-koodia ja ehdottavat tehokkaita rivi-avainten malleja.

HBase put(), get() ja scan() -kyselykomennot komentotulkissa ja Java

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.

HBase-komento syรถttรครค arvot 10, 15 ja 30 taulukkoon guru99

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:

HBase-kuoren skannauskomennon tuloste, jossa luetellaan rivien ja sarakearvot taulukossa guru99

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-kuoren get-komento palauttaa yhden rivin r1 taulukosta guru99

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:

Java koodi, joka luo HBase-konfiguraation ja lisรครค arvoja Put API:n avulla

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:

Java konsolin tuloste lukee koulutus- ja projektisarakkeiden arvoja HBase-taulukosta guru99

"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.

UKK

get-komento hakee yhden rivin sen riviavaimen perusteella ja palauttaa nopeasti. scan-komento lukee useita rivejรค perรคkkรคin taulukosta tai avainalueelta, valinnaisesti suodatettuna sarakkeiden tai ajan mukaan. Kรคytรค get-komentoa yksittรคisiin hakuihin ja scan-komentoa useiden rivien selaamiseen tai viemiseen.

Sarakeperhe on nimetty joukko sarakkeita, jotka tallennetaan yhteen ja mรครคritellรครคn taulukon luomisen yhteydessรค. Saraketarkenne on perheen sisรคllรค olevan yksittรคisen sarakkeen nimi, kuten education:col1. Perheiden on oltava olemassa kaavassa; tarkenteita voidaan lisรคtรค vapaasti kirjoitusvaiheessa.

Poista yksi solu komennolla delete, esimerkiksi delete 'guru99', 'r1', 'c1'. Koko rivin poistamiseen kรคytรค deleteall-komentoa: deleteall 'guru99', 'r1'. Tyhjennรค taulukko kokonaan poistamalla se kรคytรถstรค ja suorittamalla sitten truncate 'guru99', joka poistaa ja luo sen uudelleen.

HBase sรคilyttรครค useita aikaleimattuja versioita jokaisesta solusta. Sรคilytettรคvรค mรครคrรค asetetaan sarakeperhettรค kohden VERSIONS-attribuutilla, jonka oletusarvo on 1. Lisรครค {VERSIONS => 3} get- tai scan-funktioon palauttaaksesi useita versioita tai TIMESTAMP hakeaksesi tarkalleen yhden version.

Suorita lista nรคhdรคksesi kaikki HBase-taulukot. Suorita count 'guru99' laskeaksesi taulukon rivit, valinnaisesti kรคyttรคmรคllรค INTERVAL-arvoa edistymisen seuraamiseksi. Kรคytรค describe 'guru99' -komentoa tarkastellaksesi sarakeperheitรค ja status 'simple' -komentoa tarkistaaksesi klusterin kunnon.

HBasessa ei ole natiivia SQL:รครค, mutta Apache Phoenix lisรครค siihen SQL-kerroksen, joka kรครคntรครค kyselyt natiiveiksi put-, get- ja scan-operaatioiksi. Se tukee tuttua SELECT-, UPSERT- ja JOIN-syntaksia, mikรค helpottaa HBasen kyselyjen tekemistรค tiimeille, jotka jo osaavat SQL:รครค.

Tekoรคlykoodausavustajat ja suuret kielimallit voivat laatia HBase-komentoja ja Java asiakaskoodia selkokielisestรค kehotteesta, ehdottaa rivi-avainten malleja ja selittรครค skannaussuodattimia. Koneoppiminen auttaa myรถs suorituskyvyn hienosรครคtรถรถn ennustamalla kuumia alueita, vaikka insinรถรถrin tulisikin tarkistaa jokainen luotu kysely.

Kyllรค. GitHub Copilot voi luoda HBase-put-, get- ja scan-koodinpรคtkiรค Java tai lyhyen kommentin komentotulkki, mukaan lukien Bytes.toBytes-kutsuja ja skannaussuodattimia. RevTarkista oikean taulukon nimen, sarakeperheiden ja nykyisen Table API:n tuloste ennen sen suorittamista.

Tiivistรค tรคmรค viesti seuraavasti: