HBase s Javou

1. Prehľad

V tomto článku sa pozrieme na HBase databáza klientskej knižnice Java. HBase je distribuovaná databáza, ktorá na ukladanie údajov používa súborový systém Hadoop.

Vytvoríme príkladového klienta Java a tabuľku, do ktorej pridáme niekoľko jednoduchých záznamov.

2. Štruktúra dát HBase

V HBase sú údaje zoskupené do skupín stĺpcov. Všetci členovia stĺpca v rodine stĺpcov majú rovnakú predponu.

Napríklad stĺpce rodina1: kvalifikátor1 a rodina1: kvalifikátor2 sú obaja členmi rodina1 rodina stĺpcov. Všetci členovia rodiny stĺpcov sú uložené spoločne v súborovom systéme.

Do rodiny stĺpcov môžeme vložiť riadok, ktorý má zadaný kvalifikátor. Kvalifikátor si môžeme predstaviť ako akýsi názov stĺpca.

Pozrime sa na príklad záznamu z Hbase:

Family1: {'Qualifier1': 'row1: cell_data', 'Qualifier2': 'row2: cell_data', 'Qualifier3': 'row3: cell_data'} Family2: {'Qualifier1': 'row1: cell_data', 'Qualifier2': 'row2: cell_data', 'Qualifier3': 'row3: cell_data'}

Máme dve rodiny stĺpcov, každá z nich má tri kvalifikátory, v ktorých sú nejaké údaje o bunke. Každý riadok má kľúč riadku - je to jedinečný identifikátor riadku. Na vloženie, načítanie a odstránenie údajov použijeme kláves riadku.

3. Závislosť klienta HBase na klientovi Maven

Predtým, ako sa pripojíme k HBase, musíme pridať hbase-klient a hbase závislosti:

 org.apache.hbase hbase-client $ {hbase.version} org.apache.hbase hbase $ {hbase.version} 

4. Nastavenie HBase

Musíme nastaviť HBase, aby sme sa k nemu mohli pripojiť z klientskej knižnice Java. Inštalácia nespadá do rozsahu tohto článku, ale môžete si pozrieť niektoré inštalačné príručky HBase online.

Ďalej musíme lokálne spustiť hlavný server HBase vykonaním:

hlavný štart hbase

5. Pripojenie k HBase z Java

Na programové pripojenie z Javy do HBase je potrebné definovať konfiguračný súbor XML. Našu inštanciu HBase sme spustili na localhost, takže ju musíme zadať do konfiguračného súboru:

  hbase.zookeeper.quorum localhost hbase.zookeeper.property.clientPort 2181 

Teraz musíme nasmerovať klienta HBase na tento konfiguračný súbor:

Konfigurácia config = HBaseConfiguration.create (); Reťazec path = this.getClass () .getClassLoader () .getResource ("hbase-site.xml") .getPath (); config.addResource (nová cesta (cesta)); 

Ďalej kontrolujeme, či bolo pripojenie k HBase úspešné - v prípade poruchy, MasterNotRunningException bude vyhodené:

HBaseAdmin.checkHBaseAvailable (config);

6. Vytvorenie štruktúry databázy

Predtým, ako začneme pridávať údaje do HBase, musíme vytvoriť dátovú štruktúru pre vkladanie riadkov. Vytvoríme jednu tabuľku s dvoma rodinami stĺpcov:

private TableName table1 = TableName.valueOf ("Table1"); private String family1 = "Family1"; private String family2 = "Family2";

Najskôr musíme vytvoriť pripojenie k databáze a získať admin objekt, ktorý použijeme na manipuláciu s databázovou štruktúrou:

Pripojenie connection = ConnectionFactory.createConnection (config) Správca admin = connection.getAdmin ();

Potom môžeme vytvoriť tabuľku odovzdaním inštancie HTableDescriptor triedy do a createTable () metóda na admin objekt:

HTableDescriptor desc = nový HTableDescriptor (tabuľka1); desc.addFamily (nový HColumnDescriptor (rodina1)); desc.addFamily (nový HColumnDescriptor (rodina2)); admin.createTable (desc);

7. Pridávanie a načítanie prvkov

Po vytvorení tabuľky k nej môžeme pridať nové údaje vytvorením a Daj objekt a volanie a put () metóda na Tabuľka objekt:

byte [] riadok1 = Bytes.toBytes ("riadok1") Put p = nový Put (riadok1); p.addImmutable (family1.getBytes (), kvalifikátor1, Bytes.toBytes ("cell_data")); table1.put (p);

Načítanie predtým vytvoreného riadku je možné dosiahnuť použitím a Získajte trieda:

Získať g = nové Získať (riadok1); Výsledok r = table1.get (g); byte [] hodnota = r.getValue (family1.getBytes (), kvalifikátor1);

The riadok1 je identifikátor riadku - môžeme ho použiť na získanie konkrétneho riadku z databázy. Pri volaní:

Bytes.bytesToString (hodnota)

vrátený výsledok bude predtým vložený bunka_data.

8. Skenovanie a filtrovanie

Môžeme skenovať tabuľku a načítať všetky prvky vo vnútri daného kvalifikátora pomocou a Skenovať objekt (všimnite si, že ResultScanner predlžuje Uzatvárateľné, tak určite zavolajte Zavrieť() až budete hotoví):

Scan scan = nový Scan (); scan.addColumn (family1.getBytes (), kvalifikátor1); Skener ResultScanner = table.getScanner (skenovanie); pre (Výsledok: skener) {System.out.println ("Nájdený riadok:" + výsledok); } 

Táto operácia vytlačí všetky riadky vo vnútri a kvalifikátor1 s niektorými ďalšími informáciami, ako je časová pečiatka:

Nájdený riadok: keyvalues ​​= {Row1 / Family1: Qualifier1 / 1488202127489 / Put / vlen = 9 / seqid = 0}

Konkrétne záznamy môžeme načítať pomocou filtrov.

Najskôr vytvárame dva filtre. The filter1 určuje, že skenovací dotaz načíta prvky, ktoré sú väčšie ako riadok1, a filter2 určuje, že nás zaujímajú iba riadky, ktoré majú kvalifikátor rovný kvalifikátor1:

Filter filter1 = nový PrefixFilter (riadok1); Filter filter2 = new QualifierFilter (CompareOp.GREATER_OR_EQUAL, nový BinaryComparator (kvalifikátor1)); Zoznam filtrov = Arrays.asList (filter1, filter2);

Potom môžeme získať množinu výsledkov z a Skenovať dopyt:

Scan scan = nový Scan (); scan.setFilter (nový FilterList (Operator.MUST_PASS_ALL, filtre)); try (ResultScanner scanner = table.getScanner (scan)) {for (Result result: scanner) {System.out.println ("Found row:" + result); }}

Pri vytváraní a FilterList prešli sme okolo Prevádzkovateľ.MUST_PASS_ALL - to znamená, že musia byť splnené všetky filtre. Môžeme si zvoliť Prevádzka.MUST_PASS_ONE ak je potrebné uspokojiť iba jeden filter. Vo výslednej množine budeme mať iba riadky, ktoré sa zhodujú so zadanými filtrami.

9. Vymazanie riadkov

Nakoniec na odstránenie riadku môžeme použiť a Odstrániť trieda:

Odstrániť odstrániť = nové Odstrániť (riadok1); delete.addColumn (family1.getBytes (), kvalifikátor1); table.delete (vymazať);

Vymazávame riadok1 ktorá sa nachádza vo vnútri a rodina1.

10. Záver

V tomto rýchlom výučbe sme sa zamerali na komunikáciu s databázou HBase. Videli sme, ako sa pripojiť k HBase z klientskej knižnice Java a ako spustiť rôzne základné operácie.

Implementáciu všetkých týchto príkladov a útržkov kódu nájdete v projekte GitHub; toto je projekt Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


$config[zx-auto] not found$config[zx-overlay] not found