赞
踩
HBase 只提供了简单的基于 Key 值的快速查询能力,没法进行大量的条件查询,对于数据分析来说,不太友好。
hive 映射 hbase 为用户提供一种 sqlOnHbase 的方法。Hive 与 HBase 整合的实现是利用两者本身对外的 API 接口互相通信来完成的,其具体工作交由 Hive 的 lib 目录中的 hive-hbase-handler-xxx.jar 工具类来实现对 HBase 数据的读取。
Hive 和 HBase 通过接口互通,用户可以方便地通过 SQL 接口进行建表、映射表、查询、删除等操作。 使用 Hive 操作 HBase 中的表,只是提供了便捷性,由于对于 hiveOnHbase 表的查询走 MR 框架,因此查询效率较为缓慢需酌情使用。
Hive 集成 HBase 可以有效利用 HBase 数据库的存储特性,如行更新和列索引等。在集成的过程中注意维持 HBase jar 包的一致性。Hive 集成 HBase 需要在 Hive 表和 HBase 表之间建立映射关系,也就是 Hive 表的列 (columns) 和列类型(column types)与 HBase 表的列族(column families)及列限定词(column qualifiers)建立关联。
每一个在 Hive 表中的域都存在于 HBase 中,而在 Hive 表中不需要包含所有HBase 中的列。HBase 中的 RowKey 对应到 Hive 中为选择一个域使用 :key 来对应,列族(cf:)映射到 Hive 中的其它所有域,列为(cf:cq)。
[root@hadoop3 ~]# stop-hbase.sh
[root@hadoop3 ~]# zkServer.sh stop
[root@hadoop3 ~]# stop-alll.sh
如果还有hive进程则需要把他 kiil 掉
[root@hadoop3 ~]# cd /opt/soft/hive312/conf/
[root@hadoop3 conf]# vim ./hive-site.xml里面添加
- <property>
- <name>hive.zookeeper.quorum</name>
- <value>192.168.152.192</value>
- </property>
-
- <property>
- <name>hbase.zookeeper.quorum</name>
- <value>192.168.152.192</value>
- </property>
-
- <property>
- <name>hive.aux.jars.path</name>
- <value>file:///opt/soft/hive312/lib/hive-hbase-handler-3.1.2.jar,file:///opt/soft/hive312/lib/zookeeper-3.4.6.jar,file:///opt/soft/hive312/lib/hbase-client-2.3.5.jar,file:///opt/soft/hive312/lib/hbase-common-2.3.5-tests.jar,file:///opt/soft/hive312/lib/hbase-server-2.3.5.jar,file:///opt/soft/hive312/lib/hbase-common-2.3.5.jar,file:///opt/soft/hive312/lib/hbase-protocol-2.3.5.jar,file:///opt/soft/hive312/lib/htrace-core-3.2.0-incubating.jar</value>
- </property>
TIP:
设置jar哪一个property里面不能有空格回车
[root@hadoop3 lib]# cp /opt/soft/hbase235/lib /opt/soft/hive312/lib
是否覆盖内容:否:输入n回车即可,也可以选择覆盖
先查看guava
[root@hadoop3 lib]# find ../lib/guava*
删除除了27以外的所有jar包
[root@hadoop3 lib]# rm -rf ../lib/guava-11.0.2.jar
hbase也一样
将hive里面的guav文件拷贝到hbase里面
[root@hadoop3 lib]# cp /opt/soft/hive312/lib/guava-27.0-jre.jar ./
启动Hadoop :start-all.sh
启动zookeeoer :zkServer.sh start
启动hive : hive --service hiveserver2
beeline -u jdbc:hive2://192.168.152.192:10000
启动hbase :start-hbase.sh
进入hbase :hbase shell
使用DataGrip
- create external table students(
- id string,
- name string,
- school string
- )
- stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with
- serdeproperties ("hbase.columns.mapping" = ":key,info1:name,info2:school")
- tblproperties ("hbase.table.name" = "test:student");
-
- select * from students;
参数详解:
- stored by指定数据的存储方式
- serdeproperties:表示字段映射,对应hive中的表字段的顺序,需要注意的是 :key指的是Hbase中的rowdy,hive表中要有一个key字段与之对应,否则会报错的。
- tblproperties:表示表名映射,指定需要映射的Hbase表名。
- org.apache.hadoop.hive.hbase.HBaseStorageHandler:指定处理的存储器,就是 hive-hbase-handler-*.jar 包,要做 hive 和 hbase 的集成必须要加上这一句
- hbase.columns.mapping:定义 hive 表中的字段与 hbase 的列族映射
- hbase.table.name:用户想在 Hive 和 HBase 中使用不同表名时才需要填写。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。