说明:采用阿里hbase与自己的hive做集成,非使用阿里HBASE的请忽略。 第一种:建立Hive内部表并自动生成Hbase表 目标:建立Hive表,关联HBase表,插入数据到Hive表的同时能够影响HBase表。 进入..." />
当前位置: 代码迷 >> 综合 >> CDH6.2.1 Hive与阿里Hbase增强版集成记录
  详细解决方案

CDH6.2.1 Hive与阿里Hbase增强版集成记录

热度:0   发布时间:2024-03-05 20:10:25.0

说明:采用阿里hbase与自己的hive做集成,非使用阿里HBASE的请忽略。

第一种:建立 Hive 内部表并自动生成Hbase表

目标:建立 Hive 表,关联 HBase 表,插入数据到 Hive 表的同时能够影响 HBase 表。

进入hive -e

hive>set hbase.zookeeper.quorum=ld-xxx.hbaseue.rds.aliyuncs.com:30020;
hive>set hbase.client.username=xxx;
hive>set hbase.client.password=xxxx;
hive>set hbase.client.connection.impl=org.apache.hadoop.hbase.client.AliHBaseUEClusterConnection;

 

1> 在 Hive 中创建表同时关联 HBase

CREATE TABLE hive_hbase_table(key int, name string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name")
TBLPROPERTIES ("hbase.table.name" = "zm_uat_bd_test:hive_hbase_table", "hbase.mapred.output.outputtable" = "zm_uat_bd_test:hive_hbase_table");

提示:完成之后,可以分别进入 Hive 和 HBase 查看,都生成了对应的表

(2) 在 Hive 中创建临时中间表,用于 load 文件中的数据

提示:不能将数据直接 load 进 Hive 所关联 HBase 的那张表中

CREATE TABLE emp( key int,name string ) row format delimited fields terminated by '\t';

(3) 向 Hive 中间表中 load 数据

hive> load data local inpath '/home/admin/softwares/data/emp.txt' into table emp;

(4) 通过 insert 命令将中间表中的数据导入到 Hive 关联 Hbase 的那张表中

hive> insert into table hive_hbase_table select * from emp;

(5) 查看 Hive 以及关联的 HBase 表中是否已经成功的同步插入了数据

Hive:

hive> select * from hive_hbase_emp_table;

HBase:

Hbase> scan ‘hbase_emp_table’

 

第二种:关联已经存在的Hbase表

注:联系大数据运维创建namespace、table,以及对应的账号密码并且赋权

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

(1) 在 Hive 中创建外部表
 

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


(2) 关联后就可以使用 Hive 函数进行一些分析操作了
hive (default)> insert into hive_hbase_table values(214,'bab');

hive (default)> select * from relevance_hbase_emp;


注:为了使用更加规范,没有特殊情况下,主推业务使用方采用第二种方式进行Hbase与hive的集成,因为第一种是和hbase表强相关,删掉hive表hbase表也会被删除。而外部表则不会,公司中建议使用此种。