8.HBase_应用_集成Hive

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15014327/article/details/83349670

1.HBase与Hive集成配置

  • HBase与Hive集成:Hive数据存储在HBase、Hive表的描述信息存储在Hive。因为,Hive是高延迟的,而HBase是低延迟的。我们集成的目的就是利用HBase的优势。
  • 集成Hive创建表的方式:(1) 管理表 - Hive数据存储指定在HBase上。(2) 外部表 - 现有一个HBase表,需要对表中数据进行分析。
  • 实际上,Hive成了HBase的客户端。因此,Hive需要配置一些HBase的jar包。
# hive需要的hbase的jar包
export HBASE_HOME=/usr/hdp/2.5.3.0-37/hbase
export HIVE_HOME=/usr/hdp/2.5.3.0-37/hive
ln -s $HBASE_HOME/lib/hbase-common-1.1.2.2.5.3.0-37.jar $HIVE_HOME/lib/hbase-common-1.1.2.2.5.3.0-37.jar
ln -s $HBASE_HOME/lib/hbase-server-1.1.2.2.5.3.0-37.jar $HIVE_HOME/lib/hbase-server-1.1.2.2.5.3.0-37.jar
ln -s $HBASE_HOME/lib/hbase-client-1.1.2.2.5.3.0-37.jar $HIVE_HOME/lib/hbase-client-1.1.2.2.5.3.0-37.jar
ln -s $HBASE_HOME/lib/hbase-protocol-1.1.2.2.5.3.0-37.jar $HIVE_HOME/lib/hbase-protocol-1.1.2.2.5.3.0-37.jar
ln -s $HBASE_HOME/lib/hbase-it-1.1.2.2.5.3.0-37.jar $HIVE_HOME/lib/hbase-it-1.1.2.2.5.3.0-37.jar
ln -s $HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar $HIVE_HOME/lib/htrace-core-3.1.0-incubating.jar
ln -s $HBASE_HOME/lib/hbase-hadoop2-compat-1.1.2.2.5.3.0-37.jar $HIVE_HOME/lib/hbase-hadoop2-compat-1.1.2.2.5.3.0-37.jar
ln -s $HBASE_HOME/lib/hbase-hadoop-compat-1.1.2.2.5.3.0-37.jar $HIVE_HOME/lib/hbase-hadoop-compat-1.1.2.2.5.3.0-37.jar

2.Hive中建表

2.1 管理表 - Hive数据存储指定在HBase上

# 1. hive上创建管理表
hive (default)> create table hbase_table(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");
OK
Time taken: 3.937 seconds

# 2. hbase上出现了hive关联的hbase表
hbase(main):001:0> list
TABLE                                                                                                                                                                         
xyz                                                                                      
1 row(s) in 0.2200 seconds

=> ["xyz"]

# 3. hive表插入数据
hive (default)> insert into hbase_table values (1,'smith'),(2,'allen'),(3,'black');

# 4. 查看hbase,对应表也有了数据
hbase(main):001:0> scan 'xyz'
ROW                     COLUMN+CELL                                                      
 1                      column=cf1:val, timestamp=1540472134371, value=smith             
 2                      column=cf1:val, timestamp=1540472134371, value=allen             
 3                      column=cf1:val, timestamp=1540472134371, value=black             
3 row(s) in 0.2210 seconds

2.2 外部表 - 现有一个HBase表,需要对表中数据进行分析

# 1.查看hbase中已存在的表emp
hbase(main):004:0> scan 'emp'
ROW                     COLUMN+CELL                                                      
 10001                  column=info:address, timestamp=1540373935927, value=hebei sjz yuh
                        ua                                                               
 10001                  column=info:age, timestamp=1540373917799, value=22               
 10001                  column=info:name, timestamp=1540373904273, value=zhangsan        
 10002                  column=info:address, timestamp=1540373978440, value=henan zhengzh
                        ou erqi                                                          
 10002                  column=info:age, timestamp=1540373956551, value=24               
 10002                  column=info:name, timestamp=1540373947414, value=lisi            
 10003                  column=info:age, timestamp=1540395652596, value=beijing chaoyang 
 10003                  column=info:name, timestamp=1540395652596, value=wangwu          
 10004                  column=info:age, timestamp=1540395652596, value=shanghai chongmin
                        g                                                                
 10004                  column=info:name, timestamp=1540395652596, value=zhengliu        
 10005                  column=info:age, timestamp=1540395652596, value=anhui hefei      
 10005                  column=info:name, timestamp=1540395652596, value=zhaoqi          
5 row(s) in 0.0280 seconds

# 2.创建外表
hive (default)> create external table hbase_emp_table(
              > id int,name string,age int,address string) 
              > stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
              > with serdeproperties
              > ("hbase.columns.mapping"=":key,info:name,info:age,info:address") 
              > tblproperties("hbase.table.name"="emp");

# 3.查看表数据,结果表中有hbase表的数据
hive (default)> select * from hbase_emp_table;
OK
10001	zhangsan	22	hebei sjz yuhua
10002	lisi	24	henan zhengzhou erqi
10003	wangwu	NULL	NULL
10004	zhengliu	NULL	NULL
10005	zhaoqi	NULL	NULL

3.应用场景

日志文件
    |    导入到hive表中
hive-table
    |    hive仓库存储数据
hive-hbase-table
    |    insert ... select ...(设计rowkey)  from hive-table  
load
    |    实际存储在hbase上
hbase

猜你喜欢

转载自blog.csdn.net/qq_15014327/article/details/83349670