本次整合使用的是cdh5.5.0的版本(伪分布式环境下)
首先 需要在$HIVE_HOME/lib下添加以下jar包
guava-14.0.1.jar
hbase-common-1.0.0-cdh5.5.0.jar
hbase-server-1.0.0-cdh5.5.0.jar
hbase-client-1.0.0-cdh5.5.0.jar
hbase-protocol-1.0.0-cdh5.5.0.jar
hbase-it-1.0.0-cdh5.5.0.jar
htrace-core-3.2.0-incubating.jar
hive-hbase-handler-1.1.0-cdh5.5.0.jar
zookeeper-3.4.5-cdh5.5.0.jar
没有的从HBase的lib目录下拷贝(或者建立软连接)
存在同一jar包但是版本不一致时,统一版本
测试:
整合后,存在两种表的创建
1、管理表
创建hive表的时候,指定数据存储在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.mapred.output.outputtable" = "xyz");
- 这种方式,在向hive中的表插入数据时,数据是存在hbase中的,即HDFS上的hive表的文件夹下为空。用flush命令,会发现数据存在hbase相关文件夹下。
- 这种方式删除hive中的表,hbase下的表同样也会删除。
2、外部表
对已有的HBase表中的数据进行分析。(EXTERNAL关键字)
CREATE EXTERNAL TABLE hbase_user(id int, name string, age int, sex string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age,info:sex")
TBLPROPERTIES ("hbase.table.name" = "user", "hbase.mapred.output.outputtable" = "user");
- 这种方式会将HBASE中的已存在的表的信息(列族,列信息等)复制一份到HIVE中,可以进行分析。
- 删除HIVE中的这张表对HBASE的表无影响。

3201

被折叠的 条评论
为什么被折叠?



