In deze tutorial leer je:
- Schrijf gegevens naar HBase-tabel: Shell
- Gegevens lezen uit HBase-tabel: Shell
- Schrijf gegevens naar HBase-tabel: JAVA API
- Gegevens lezen uit HBase-tabel: JAVA-API
Schrijf gegevens naar HBase-tabel: Shell
Het put-commando wordt gebruikt om gegevens in een tabel op te slaan
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Dit commando wordt gebruikt voor de volgende dingen
- Het plaatst een cel 'waarde' in een gedefinieerde of gespecificeerde tabel of rij of kolom.
- Het zal optioneel de tijdstempel coördineren.
Voorbeeld:
- Hier plaatsen we waarden in tabel "guru99" onder rij r1 en kolom c1
hbase> put 'guru99', 'r1', 'c1', 'value', 10
- We hebben drie waarden, 10,15 en 30 in tabel "guru99" geplaatst, zoals weergegeven in de onderstaande schermafbeelding
-
Stel dat de tabel "Guru99" een tabelverwijzing heeft zoals zeg g. We kunnen de opdracht ook uitvoeren op tabelreferentie, ook als
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
-
De uitvoer zal zijn zoals getoond in het bovenstaande screenshot na het plaatsen van waarden in "guru99".
Gegevens lezen uit HBase-tabel: Shell
In deze sectie zullen we het volgende controleren
- Waarden die worden ingevoegd in HBase-tabel 'guru99'
- Kolomnamen met waarden die aanwezig zijn in HBase-tabel guru99
Uit de bovenstaande schermafbeelding kunnen we afleiden
- Als we het "scan" -commando in de HBase-shell uitvoeren, zal het de ingevoegde waarden in "guru99" als volgt weergeven
- In de HBase-shell worden waarden weergegeven die door onze code zijn ingevoegd met kolom- en rijnamen
- Hier kunnen we zien dat de ingevoegde kolomnaam 'onderwijs' en 'projecten' is
- De ingevoegde waarden zijn "BigData" en "HBase Tutorials" in de genoemde kolommen
U kunt ook de opdracht Get gebruiken om gegevens uit een tabel te lezen
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Hier omvatten
Door deze opdracht te gebruiken, krijgt u een rij- of celinhoud in de tabel. Daarnaast kunt u er ook extra parameters aan toevoegen, zoals TIMESTAMP, TIMERANGE, VERSIONS, FILTERS, etc. om een bepaalde rij of celinhoud te krijgen.
Voorbeelden: -
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Voor tabel "guru99 'worden de waarden voor rij r1 en kolom c1 weergegeven met behulp van dit commando, zoals weergegeven in de bovenstaande schermafbeelding
hbase> get 'guru99', 'r1'
Voor tabel "guru99" worden de rij r1-waarden weergegeven met dit commando
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Voor tabel "guru99" worden de waarden van rij 1 in het tijdsbereik ts1 en ts2 weergegeven met dit commando
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Voor tabel "guru99" worden rij r1 en kolomfamilies 'c1, c2, c3 waarden weergegeven met behulp van dit commando
Schrijf gegevens naar HBase-tabel: JAVA API
In deze stap gaan we gegevens schrijven naar HBase-tabel "guru99"
Eerst moeten we code schrijven voor het invoegen en waarden ophalen uit HBase met behulp van het programma HBaseLoading.java.
Voor het maken en invoegen van waarden in een tabel op kolomniveau, moet u coderen zoals hieronder .
Van het screenshot hierboven
- Wanneer we een HBase-configuratie maken, verwijst deze naar de configuraties die we tijdens HBase-installaties in de bestanden base-site.xml en hbase-default.xml hebben ingesteld
- Creëren van tabel "guru99" met behulp van de HTable-methode
- Rij1 toevoegen aan tabel "guru99"
- Kolomnamen "onderwijs" en "projecten" specificeren en waarden invoegen in kolomnamen in de respectieve row1. De waarden die hier worden ingevoegd, zijn "BigData" en "HBaseTutorials".
Gegevens lezen uit HBase-tabel: Java API
Wat de waarden ook zijn die we in HBase-tabellen in de bovenstaande sectie hebben geplaatst, hier gaan we die waarden ophalen en weergeven.
Voor het ophalen van resultaten die zijn opgeslagen in "guru99"
De bovenstaande schermafbeelding laat zien dat de gegevens worden gelezen uit de HBase-tabel 'guru99'
- Hierin gaan we de waarden ophalen die zijn opgeslagen in kolomfamilies, dwz "onderwijs" en "projecten"
- Met het "get" -commando gaan we opgeslagen waarden ophalen in de HBase-tabel
- Resultaten scannen met de opdracht "scan". De waarden die zijn opgeslagen in rij1 worden weergegeven op de console.
Zodra het schrijven van code is voltooid, moet u de Java-applicatie op deze manier uitvoeren
- Klik met de rechtermuisknop op HBaseLoading.java -> Uitvoeren als -> Java-applicatie
- Na het uitvoeren van "HBaseLoading .java" worden de waarden ingevoegd in "guru99" in elke kolom in HBase en in hetzelfde programma kan het ook waarden ophalen.
Hier is de volledige code
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 followingtable.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();}}}
Overzicht:
Zoals we in deze zelfstudie hebben besproken, kunt u de opdracht put gebruiken om gegevens in een tabel in te voegen. U kunt de opdracht scan, get gebruiken om gegevens uit een tabel te lezen