8 ,hive 集成 hbase ( hbase 表已经存在,我们用 hive 创建表去关联它 )

一 ,集成

1 ,作用 : 分析

  1. hbase 只能做存储,不能做分析。
  2. hbase 要想分析数据,必须集成第三方框架。
  3. 分析框架 : mr ,hive ,spark
  4. 要想分析 hbase 中的数据,必须用到第三方框架 。

2 ,集成 : 将 hbase 的 jar 包给 hive ( 用软链接的形式 )

ln -s $HBASE_HOME/lib/hbase-common-1.2.0-cdh5.14.0.jar $HIVE_HOME/lib/hbase-common-1.2.0-cdh5.14.0.jar
ln -s $HBASE_HOME/lib/hbase-server-1.2.0-cdh5.14.0.jar $HIVE_HOME/lib/hbase-server-1.2.0-cdh5.14.0.jar
ln -s $HBASE_HOME/lib/hbase-client-1.2.0-cdh5.14.0.jar $HIVE_HOME/lib/hbase-client-1.2.0-cdh5.14.0.jar
ln -s $HBASE_HOME/lib/hbase-protocol-1.2.0-cdh5.14.0.jar $HIVE_HOME/lib/hbase-protocol-1.2.0-cdh5.14.0.jar
ln -s $HBASE_HOME/lib/hbase-it-1.2.0-cdh5.14.0.jar $HIVE_HOME/lib/hbase-it-1.2.0-cdh5.14.0.jar
ln -s $HBASE_HOME/lib/htrace-core-3.2.0-incubating.jar $HIVE_HOME/lib/htrace-core-3.2.0-incubating.jar
ln -s $HBASE_HOME/lib/hbase-hadoop2-compat-1.2.0-cdh5.14.0.jar $HIVE_HOME/lib/hbase-hadoop2-compat-1.2.0-cdh5.14.0.jar
ln -s $HBASE_HOME/lib/hbase-hadoop-compat-1.2.0-cdh5.14.0.jar $HIVE_HOME/lib/hbase-hadoop-compat-1.2.0-cdh5.14.0.jar

3 ,集成 : 修改 hive-site.xml

cd /export/servers/hive-1.1.0-cdh5.14.0/conf

<property>
	<name>hive.zookeeper.quorumname>
	<value>node01,node02,node03value>
	<description>
The list of ZooKeeper servers to talk to. This is only needed for read/write locks.
	description>
property>
<property>
	<name>hive.zookeeper.client.portname>
	<value>2181value>
	<description>
The port of ZooKeeper servers to talk to. This is only needed for read/write locks.
	description>
property>

4 ,进入 hive 命令行 :

nohup hiveserver2 1>/dev/null 2>&1 &
beeline -u jdbc:hive2://node01:10000 -n root

5 ,查看建 emp 表的全部完整语法 : 必须是我们已经创建过的表

use sfl;
show create table movie;

二 ,建表 ,导入数据 :

1 ,建表 : hive - hbase ( 在 hive 中建表,同时关联到 hbase )

CREATE TABLE hive_hbase_emp_table(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno")
TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");

2 ,查看 : hive

show tables;
8 ,hive 集成 hbase ( hbase 表已经存在,我们用 hive 创建表去关联它 )_第1张图片

3 ,查看 : hbase

hbase shell
list
8 ,hive 集成 hbase ( hbase 表已经存在,我们用 hive 创建表去关联它 )_第2张图片

4 ,导入数据 : 从 hive 表往这个双库表导入数据

  1. 不可以 : 不能直接用 load 方式向 hbase 插入数据。
  2. 可以 : 从 hive 表查出来数据,导入到双库表中。
  3. sql :
insert into table hive_hbase_emp_table select * from emp;

5 ,查询数据 :

  1. hive 中 : select * from hive_hbase_emp_table;
  2. hbase 中 : scan ‘hbase_emp_table’

三 ,已存在 hbase 表,关联到 hive

1 ,需求 :

在 HBase 中已经存储了某一张表 hbase_emp_table,然后在 Hive 中创建一个外部表来关联 HBase中的 hbase_emp_table 这张表,使之可以借助 Hive 来分析 HBase 这张表中的数据。

2 ,查看 hbase 中的 fruit 表 :


hbase(main):005:0> scan 'fruit'
ROW		COLUMN+CELL                                                                                      
1001	column=info:color, timestamp=1563939888519, value=Red                                            
1001	column=info:name, timestamp=1563939888519, value=Apple                                           
1002	column=info:color, timestamp=1563939888519, value=Yellow                                         
1002	column=info:name, timestamp=1563939888519, value=Pear                                            
1003	column=info:color, timestamp=1563939888519, value=Yellow                                         
1003	column=info:name, timestamp=1563939888519, value=Pineapple 

3 ,在 hive 中创建外部表,关联 hbase : hive 操作

CREATE EXTERNAL TABLE relevance_hbase_fruit(
id int,
name string,
color string)
STORED BY 
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:color") 
TBLPROPERTIES ("hbase.table.name" = "fruit");

4 ,查询数据 : hive

select * from relevance_hbase_fruit;

8 ,hive 集成 hbase ( hbase 表已经存在,我们用 hive 创建表去关联它 )_第3张图片

你可能感兴趣的:(8 ,hive 集成 hbase ( hbase 表已经存在,我们用 hive 创建表去关联它 ))