Exemple de requête HBase : commande put(), get(), scan() dans HBase
Écrire des données dans la table HBase : Shell
La commande put est utilisée pour stocker des données dans une table
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Cette commande est utilisée pour les choses suivantes
- Il placera une « valeur » de cellule dans une table, une ligne ou une colonne définie ou spécifiée.
- Il coordonnera éventuellement l'horodatage.
Mise en situation :
- Ici, nous plaçons les valeurs dans le tableau « guru99 » sous la ligne r1 et la colonne c1
hbase> put 'guru99', 'r1', 'c1', 'value', 10
- Nous avons placé trois valeurs, 10,15, 30 et 99 dans le tableau « guru », comme indiqué dans la capture d'écran ci-dessous.
- Supposons que la table « Guru99 » ait une référence de table comme, par exemple, g. Nous pouvons également exécuter la commande sur la référence de table, comme
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
- Le résultat sera tel qu'indiqué dans la capture d'écran ci-dessus après avoir placé les valeurs dans « guru99 ».
Lire les données de la table HBase : Shell
Dans cette section, nous vérifierons les éléments suivants
- Valeurs insérées dans la table HBase « guru99 »
- Noms de colonnes avec des valeurs présentes dans la table HBase guru99
De la capture d'écran ci-dessus, nous pouvons déduire
- Si nous exécutons la commande « scan » dans le shell HBase, elle affichera les valeurs insérées dans « guru99 » comme suit
- Dans le shell HBase, il affichera les valeurs insérées par notre code avec les noms de colonnes et de lignes
- Ici, nous pouvons voir que les noms de colonnes insérés sont « éducation » et « projets »
- Les valeurs insérées sont «BigData» et « Tutoriels HBase » dans les colonnes mentionnées
Vous pouvez également utiliser la commande Get pour lire les données d'une table
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Ici inclure TIMERANGE, TIMESTAMP, VERSIONS et FILTERS.
En utilisant cette commande, vous obtiendrez le contenu d’une ligne ou d’une cellule présente dans le tableau. En plus de cela, vous pouvez également y ajouter des paramètres supplémentaires tels que TIMESTAMP, TIMERANGE, VERSIONS, FILTERS, etc. pour obtenir le contenu d'une ligne ou d'une cellule particulière.
Exemples:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Pour le tableau « guru99 », les valeurs de la ligne r1 et de la colonne c1 s'afficheront à l'aide de cette commande, comme indiqué dans la capture d'écran ci-dessus.
hbase> get 'guru99', 'r1'
Pour le tableau « guru99 », les valeurs de la ligne r1 seront affichées à l'aide de cette commande
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Pour le tableau « guru99 », les valeurs de la ligne 1 dans la plage de temps ts1 et ts2 seront affichées à l'aide de cette commande
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Pour le tableau « guru99 », les valeurs c1, c1, c2 des familles de lignes r3 et de colonnes seront affichées à l'aide de cette commande
Écrire des données dans la table HBase : API JAVA
Dans cette étape, nous allons écrire des données dans la table HBase « guru99 »
Tout d'abord, nous devons écrire du code pour insérer et récupérer des valeurs depuis HBase en utilisant-Programme HBaseLoading.java.
Pour créer et insérer des valeurs dans un tableau au niveau des colonnes, vous devez coder comme ci-dessous.
D'après la capture d'écran ci-dessus
- Lorsque nous créons la configuration HBase, elle pointe vers les configurations que nous avons définies dans les fichiers base-site.xml et hbase-default.xml lors de la création de la configuration HBase. Installations HBase
- Création de la table « guru99 » en utilisant la méthode HTable
- Ajout de la ligne 1 au tableau « guru99 »
- Spécifier les noms de colonnes « éducation » et « projets » et insérer des valeurs dans les noms de colonnes dans la ligne respective 1. Les valeurs insérées ici sont « BigData » et « HBaseTutorials ».
Lire les données de la table HBase : Java API
Quelles que soient les valeurs que nous avons placées dans les tables HBase dans la section ci-dessus, nous allons ici récupérer et afficher ces valeurs.
Pour récupérer les résultats stockés dans « guru99 »
La capture d'écran ci-dessus montre que les données sont lues à partir de la table HBase « guru99 »
- En cela, nous allons récupérer les valeurs stockées dans les familles de colonnes, c'est-à-dire « éducation » et « projets »
- En utilisant la commande « get », nous allons récupérer les valeurs stockées dans la table HBase
- Résultats de l'analyse à l'aide de la commande « scan ». Les valeurs stockées dans la ligne 1 seront affichées sur la console.
Une fois l'écriture du code terminée, vous devez exécuter Java application comme celle-ci
- Faites un clic droit sur HBaseLoading.java -> Courir comme -> Java Application
- Après avoir exécuté « HBaseLoading .java », les valeurs vont être insérées dans « guru99 » dans chaque colonne de HBase et dans le même programme, il peut également récupérer les valeurs.
Voici le code complet
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(); } } }
Résumé
Comme nous l'avons vu dans ce didacticiel, vous pouvez utiliser la commande put pour insérer des données dans une table. Vous pouvez utiliser la commande scan, get pour lire les données d'une table