HBase Java-val

1. Áttekintés

Ebben a cikkben megnézzük a HBase adatbázis Java kliens könyvtár. A HBase egy elosztott adatbázis, amely a Hadoop fájlrendszert használja adatok tárolására.

Létrehozunk egy Java példaprogramot és egy táblázatot, amelyhez hozzáadunk néhány egyszerű rekordot.

2. HBase adatstruktúra

A HBase-ben az adatok oszlopcsaládokba vannak csoportosítva. Az oszlopcsalád összes oszloptagjának ugyanaz az előtagja.

Például az oszlopok család1: minősítő1 és család1: minősítő2 mindketten a család1 oszlopcsalád. Az összes oszlopcsaládtag együtt van tárolva a fájlrendszerben.

Az oszlopcsaládon belül elhelyezhetünk egy sort, amely rendelkezik egy meghatározott minősítővel. A minősítőt egyfajta oszlopnévnek gondolhatjuk.

Lássunk egy példa rekordot a Hbase-től:

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

Két oszlopcsaládunk van, mindegyiknek három minősítője van, néhány sejtadattal. Minden sorhoz tartozik egy sorkulcs - ez egy egyedi sorazonosító. A sor billentyűvel fogjuk beilleszteni, lekérni és törölni az adatokat.

3. HBase Client Maven függőség

Mielőtt csatlakoznánk a HBase-hez, hozzá kell adnunk hbase-kliens és hbase függőségek:

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

4. A HBase beállítása

Be kell állítanunk a HBase-t, hogy egy Java kliens könyvtárból tudjunk csatlakozni hozzá. A telepítés nem tartozik a cikk hatálya alá, de online megtekintheti a HBase telepítési útmutatóit.

Ezután a HBase mesteret helyben kell elindítanunk a következő végrehajtással:

hbase master start

5. Csatlakozás a HBase-hez Java-ról

A Java-ról a HBase-hez való programozott csatlakozáshoz meg kell határoznunk egy XML konfigurációs fájlt. A HBase példányt a localhoston indítottuk el, így ezt be kell írnunk egy konfigurációs fájlba:

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

Most egy HBase klienst kell mutatnunk arra a konfigurációs fájlra:

Konfiguráció config = HBaseConfiguration.create (); Karakterlánc útvonala = this.getClass () .getClassLoader () .getResource ("hbase-site.xml") .getPath (); config.addResource (új elérési út (útvonal)); 

Ezután ellenőrizzük, hogy a HBase-hez való csatlakozás sikeres volt-e - hiba esetén a MasterNotRunningException dobni fogják:

HBaseAdmin.checkHBaseAvailable (config);

6. Adatbázis-struktúra létrehozása

Mielőtt elkezdenénk adatot hozzáadni a HBase-hez, létre kell hoznunk az adatstruktúrát a sorok beszúrásához. Hozunk létre egy táblázatot két oszlopcsaláddal:

privát TableName tábla1 = TableName.valueOf ("Table1"); privát húrcsalád1 = "Család1"; privát húrcsalád2 = "Család2";

Először is létre kell hoznunk egy kapcsolatot az adatbázissal és be kell szereznünk admin objektum, amelyet egy adatbázis-struktúra manipulálására használunk:

Csatlakozási kapcsolat = ConnectionFactory.createConnection (config) Adminisztrátor admin = connection.getAdmin ();

Ezután létrehozhatunk egy táblázatot a HTableDescriptor osztály a táblázat létrehozása() módszer a admin tárgy:

HTableDescriptor desc = új HTableDescriptor (1. táblázat); desc.addFamily (új HColumnDescriptor (család1)); desc.addFamily (új HColumnDescriptor (család2)); admin.createTable (desc);

7. Elemek hozzáadása és visszakeresése

A létrehozott táblával új adatokat adhatunk hozzá a Tedd objektum és hívás a put () módszer a asztal tárgy:

bájt [] 1. sor = Bájtok - Bájtok ("1. sor") Tedd p = új Tedd (1. sor); p.addImmutable (family1.getBytes (), qualifier1, Bytes.toBytes ("celladat")); táblázat1.put (p);

A korábban létrehozott sor lekérése az a használatával érhető el Kap osztály:

Get g = new Get (1. sor); Eredmény r = table1.get (g); bájt [] érték = r.getValue (család1.getBytes (), minősítő1);

A sor1 egy sorazonosító - használhatjuk egy adott sor lekérésére az adatbázisból. Híváskor:

Bytes.bytesToString (érték)

a visszaküldött eredmény korábban be lesz illesztve cell_data.

8. Szkennelés és szűrés

Szkennelhetjük a táblázatot, az a segítségével használhatjuk az adott selejtező összes elemét Letapogatás objektum (vegye figyelembe, hogy ResultScanner kiterjed Bezárható, ezért mindenképpen hívjon Bezárás() rajta, ha kész vagy):

Scan scan = új Scan (); scan.addColumn (család1.getBytes (), minősítő1); ResultScanner szkenner = table.getScanner (szkennelés); for (Eredmény eredménye: szkenner) {System.out.println ("Talált sor:" + eredmény); } 

Ez a művelet minden sort kinyomtat a minősítő1 néhány további információval, például időbélyegzővel:

Talált sor: keyvalues ​​= {Row1 / Family1: Qualifier1 / 1488202127489 / Put / vlen = 9 / seqid = 0}

Szűrők segítségével lekérhetünk bizonyos rekordokat.

Először két szűrőt hozunk létre. A szűrő1 megadja, hogy a szkennelési lekérdezés nagyobb elemeket fog beolvasni, mint 1. sor, és szűrő2 meghatározza, hogy csak azok a sorok érdekelnek bennünket, amelyek egyenlő minősítővel rendelkeznek minősítő1:

Filter filter1 = new PrefixFilter (1. sor); Filter filter2 = new QualifierFilter (CompareOp.GREATER_OR_EQUAL, new BinaryComparator (qualifier1)); Lista szűrők = Arrays.asList (szűrő1, szűrő2);

Ekkor eredményhalmazt kaphatunk az a-ból Letapogatás lekérdezés:

Scan scan = új Scan (); scan.setFilter (új FilterList (Operator.MUST_PASS_ALL, szűrők)); próbáld meg (ResultScanner scanner = table.getScanner (scan)) {for (Eredmény eredménye: szkenner) {System.out.println ("Talált sor:" + eredmény); }}

A FilterList elhaladtunk egy Operator.MUST_PASS_ALL - ez azt jelenti, hogy minden szűrőnek meg kell felelnie. Választhatunk egy Művelet.MUST_PASS_ONE ha csak egy szűrőt kell kielégíteni. A kapott halmazban csak a megadott szűrőknek megfelelő sorok lesznek.

9. Sorok törlése

Végül egy sor törléséhez használhatjuk a Töröl osztály:

Törlés törlés = új Törlés (1. sor); delete.addColumn (család1.getBytes (), minősítő1); table.delete (törlés);

Törölünk egy sor1 hogy belül lakik a család1.

10. Következtetés

Ebben a gyors bemutatóban a HBase adatbázissal való kommunikációra összpontosítottunk. Láttuk, hogyan lehet csatlakozni a HBase-hez a Java kliens könyvtárból, és hogyan lehet futtatni különféle alapvető műveleteket.

Mindezen példák és kódrészletek megvalósítása megtalálható a GitHub projektben; ez egy Maven projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.


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