Intégration Hive HBase

l'intégration hive hbase nécessite plus d'exigences,

1.hive doit être 0.6.0 
2.hive lui-même nécessite que la version la plus élevée de hadoop soit hadoop-0.20.2 
3. La version de hbase doit être 0.20.3, les autres versions doivent recompiler hive_hbase-handler 
mais le nouveau version de hbase (0.90) Les modifications sont si importantes qu'il est impossible de compiler à partir de. C'est dégoûtant, hbase est actuellement mis à jour relativement rapidement, actuellement 0.90 (de 0.20.6 à 0.89), pour savoir pourquoi ce saut, reportez-vous à l'explication officielle http://wiki.apache.org/hadoop/Hbase/HBaseVersions 

1 ) Démarrer Hbase, 
exiger hbase-0.20.3, zookeeper-3.2.2 
Si vous n'utilisez pas hbase-0.20.3, vous devez recompiler hive_hbase-handler.jar 

2) Connexion HBase à nœud unique./bin/hive 
-hiveconf hbase .master =master:60000 

3) Connexion au cluster HBase 
1. Démarrez zookeeper 
2. Démarrez hbase 
3. Démarrez hive, ajoutez la prise en charge de zookeeper 

code java  

./bin/hive -hiveconf hbase.zookeeper.quorum= master,slave-A,slave-B  

//Tous les nœuds zookeeper  

2. Insérer 
le début  des données

./bin/hive --auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  -hiveconf hbase.zookeeper.quorum=slave-001,slave-002,slave-003  

hive  
1. Créer une base de données reconnue par hbase 

CREATE TABLE hbase_table_1(key int, value string)   
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")  
TBLPROPERTIES ("hbase.table.name" = "xyz");  

hbase.table.name définit le nom de la table dans hbase 
hbase.columns.mapping définit la famille de colonnes dans hbase 

2. Utilisez sql pour importer des données  
I. Préparez les données à l'avance 
a) Créez une nouvelle table de données Hive 

CREATE TABLE pokes (foo INT, bar STRING);   

b) Données d'insertion de lot 

hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;   


Ce fichier se trouve dans le répertoire d'installation de la ruche, examples/files/kv1.txt 

  1. ii. Utilisez sql pour importer hbase_table_1  
INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;  


Notez que le démarrage par défaut signalera 
FAILED : Erreur d'exécution, le code de retour 2 de org.apache.hadoop.hive.ql.exec.ExecDriver  
doit être ajouté au démarrage 

-auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  

3 afficher les données 

hive> select * from  hbase_table_1; 

 Il affichera les données que vous venez d'insérer 
86 val_86 

hbase  
1. Connectez-vous à hbase 

[root@master hbase]# ./bin/hbase shell  

2. Afficher la structure du tableau 

hbase(main):001:0> describe 'xyz'  
DESCRIPTION                                                             ENABLED                                 
 {NAME => 'xyz', FAMILIES => [{NAME => 'cf1', COMPRESSION => 'NONE', VE true                                    
 RSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY =>                                         
  'false', BLOCKCACHE => 'true'}]}                                                                              
1 row(s) in 0.7460 seconds  

3. Afficher les données chargées 

hbase(main):002:0> scan 'xyz'  
ROW                          COLUMN+CELL                                                                                         
 86                          column=cf1:val, timestamp=1297690405634, value=val_86    
1 row(s) in 0.0540 seconds 

On peut voir que les données 86 ajoutées dans hive sont déjà dans hbase 

4. Ajouter des données 

' hbase(main):008:0> put 'xyz','100','cf1:val','www.360buy.com'    
0 row(s) in 0.0630 seconds  

Hive  
fait référence aux données de Hive 

hive> select * from hbase_table_1;                                              
OK  
100     www.360buy.com  
86      val_86  
Time taken: 8.661 seconds  

Les données qui viennent d'être insérées dans hbase sont déjà dans hive. 
hive accède à la hbase existante 
à l'aide de CREATE EXTERNAL TABLE 

CREATE EXTERNAL TABLE hbase_table_2(key int, value string)   
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")  
TBLPROPERTIES("hbase.table.name" = "some_existing_table");  


3. Colonnes et familles multiples (Colonnes et familles multiples)  
1. créer une base de données 

CREATE TABLE hbase_table_2(key int, value1 string, value2 int, value3 int)   
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES (  
"hbase.columns.mapping" = ":key,a:b,a:c,d:e"  
);  


2. Insérer des données 

INSERT OVERWRITE TABLE hbase_table_2 SELECT foo, bar, foo+1, foo+2   
FROM pokes WHERE foo=98 OR foo=100;  

Cela a 3 colonnes hive (valeur1 et valeur2, valeur3), 2 familles de colonnes hbase (a, d) Les 
2 colonnes de Hive (valeur1 et valeur2) correspondent à 1 famille de colonnes hbase (a, le nom de la colonne dans hbase b, c), le l'autre colonne (valeur3) de hive correspond à la colonne (e) dans la famille de colonnes (d) 

3. Connectez-vous à hbase pour afficher la structure 

hbase(main):003:0> describe "hbase_table_2"  
DESCRIPTION                                                             ENABLED                                 
 {NAME => 'hbase_table_2', FAMILIES => [{NAME => 'a', COMPRESSION => 'N true                                    
 ONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_M                                         
 EMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'd', COMPRESSION =>                                          
 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN                                         
 _MEMORY => 'false', BLOCKCACHE => 'true'}]}                                                                    
1 row(s) in 1.0630 seconds  

4. Afficher les données hbase 

hbase(main):004:0> scan 'hbase_table_2'  
ROW                          COLUMN+CELL                                                                        
 100                         column=a:b, timestamp=1297695262015, value=val_100                                 
 100                         column=a:c, timestamp=1297695262015, value=101                                     
 100                         column=d:e, timestamp=1297695262015, value=102                                     
 98                          column=a:b, timestamp=1297695242675, value=val_98                                  
 98                          column=a:c, timestamp=1297695242675, value=99                                      
 98                          column=d:e, timestamp=1297695242675, value=100                                     
2 row(s) in 0.0380 seconds  

5. Afficher dans la ruche 

hive> select * from hbase_table_2;  
OK  
100     val_100 101     102  
98      val_98  99      100  
Time taken: 3.238 seconds  

Référence 
http://wiki.apache.org/hadoop/Hive/HBaseIntegration 

Guess you like

Origin blog.csdn.net/caryxp/article/details/131299434