HBase 提供的查询主要还是通过 key 的方式进行的,相比 hive,hbase 的查询要薄弱很多。Hive 整合 HBase 后的使用场景:
- 通过 Hive 把数据加载到 HBase 中,数据源可以是文件也可以是 Hive 中的表
- 通过整合,让 HBase 支持 JOIN, GROUP 等 SQL 查询语法
- 通过整合,不仅可完成 HBase 的数据实时查询,也可以使用 Hive 查询 HBase 中的数据完成复杂的数据分析
集成
- 把 hbase 相关 jar 包拷贝到 hive lib 目录下
hbase-common-2.5.3.jar
hbase-server-2.5.3.jar
hbase-client-2.5.3.jar
hbase-protocol-2.5.3.jar
hbase-it-2.5.3.jar
hbase-hadoop-compat-2.5.3.jar
hbase-hadoop2-compat-2.5.3.jar
hive-site.xml
<property> <name>hive.zookeeper.quorum</name> <value>hadoop01,hadoop02,hadoop03</value> </property> <property> <name>hive.zookeeper.client.port</name> <value>2181</value> </property>
- JDK版本保持一致, 推荐1.8
测试
- hive 里面建表:
CREATE TABLE hive_hbase_person_table( empno int, ename string, age int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:age") TBLPROPERTIES ("hbase.table.name" = "hbase_person_table");
CREATE TABLE person( empno int, ename string, age int) row format delimited fields terminated by ',';
- hive 导入数据:
load data local inpath '/testdata/hbasedata' into table person;
insert into table hive_hbase_person_table select * from person;
- hbase 查询数据:
scan 'hbase_person_table'