Interroger les données Hbase depuis Hive

Dans ce tutoriel, je voudrais vous expliquer comment interroger les données hbase depuis hive. L’avantage de cela est de manipuler les données de la table HBASE ( NoSQL) en SQL et rendre facile l’accès aux données HBASE. car Hbase offre des commandes limitées pour visualiser les données directement en hbase ( Scan,Put,Get ..)

Tout d’abord nous allons créer une table Hbase et insérer les données dans cette table :

Créer la table Client ayant une seule COLUMN FAMILY et QUALIFIER = Nom comme suit :

Accéder à Hbase 

hbase shell

Créer la table Client et la COLUMN FAMILY ‘cf’ :

create 'client', 'cf'

Insérer des lignes dans la table client

put 'client','1','cf:nom','phillipe'
put 'client','2','cf:nom','bertrand'
put 'client','3','cf:nom','ali'
put 'client','4','cf:nom','michael'

Visualiser la table client dans HBASE

hbase(main):023:0> scan 'client'
ROW COLUMN+CELL 
 1 column=cf:nom, timestamp=1462575108026, value=phillipe 
 2 column=cf:nom, timestamp=1462575119739, value=bertrand 
 3 column=cf:nom, timestamp=1462575129772, value=ali 
 4 column=cf:nom, timestamp=1462575137408, value=michael 
4 row(s) in 0.0610 seconds

hbase(main):024:0>

Une fois la table HIVE créée, nous avons créer la table HIVE qui permet d’interroger les données HBASE sans copier les données dans HIVE et je vais vous prouver cela.

Script Hive pour créer la table External ( obligatoire ) car ce n’est pas une table interne 

CREATE EXTERNAL TABLE hbase_table_client (id int, name string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf:name")
TBLPROPERTIES ("hbase.table.name" = "client");

Explication :

CREATE EXTERNAL TABLE hbase_table_client (id int, name string)

Nous avons créé une table l’external hive hbase_table_client qui correspond aux données Hbase ( id et nam )

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

Dire à Hive que les données sont dans HBASE

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf:name")

Donner le mapping Hbase à Hive pour avoir la correspondance entre la table HIVE et les données HBASE dans ce cas , on a une Column Family qui est cf:name

TBLPROPERTIES ("hbase.table.name" = "client");

Enfin le nom de la table HBASE en l’occurrence c’est la table client

Il nous rester qu’interroger Hbase depuis la table ( vue ) Hive qu’on créer comme suit

Newsletter

Retrouvez l’essentiel de l’actualité du Big Data directement par mail !

Les experts de Formation-BigData décortiquent chaque mois l’actualité, les dernières innovations.