前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0884-7.1.6-如何在CDP中集成Hive on HBase

0884-7.1.6-如何在CDP中集成Hive on HBase

作者头像
Fayson
发布2022-08-26 17:48:11
3730
发布2022-08-26 17:48:11
举报
文章被收录于专栏:Hadoop实操Hadoop实操

1.文档编写目的

本篇文章主要介绍如何在Hive中集成HBase,将HBase表映射成Hive表,实现在beeline中查询或者修改HBase的表数据。

  • 测试环境

1.集群是Cloudera Enterprise 7.3.1和Cloudera Runtime 7.1.6

2.系统均为RedHat 7.6

3.集群已启用 Kerberos

4.OpenLADP 2.4.44-23.el7_9

2.配置HBase与Hive集成

1.登录CM,下载HBase的配置文件,解压后打开hbase-site.xml

2.在安装了HBase的服务器节点输入命令:

代码语言:javascript
复制
hbase mapredcp|tr : ,

注意:这个命令已经将输出“:”替换成英文逗号“,”分隔。

3.去Hive服务下,配置,hive-site.xml 的 Hive 服务高级配置代码段(安全阀)

代码语言:javascript
复制
<property>
<name>hive.aux.jars.path</name>
<value>
上面hbase mapredcp命令输出内容
</value>
</property>
<property>
上面步骤中hbase-site.xml文件的内容
</property>

上面的配置完成后,保存并重启Hive 服务。

3.测试

1、在hbase shell中创建HBase表

代码语言:javascript
复制
create "test", "C1"
put "test", "01", "C1:ID", "0001"
put "test", "01", "C1:Name", "aa"
put "test", "01", "C1:Company", "company1"

2、在beeline中创建hive表映射到hbase,可以查询到数据

代码语言:javascript
复制
CREATE EXTERNAL TABLE `hbase_table_test`(
    `key` string,
    `id` string,
    `name` string,
    `company` string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping'=':key,C1:ID,C1:Name,C1:Company')
TBLPROPERTIES ('hbase.mapred.output.outputtable'='test','hbase.table.name'='test');

3、插入数据

代码语言:javascript
复制
insert into hbase_table_test values("03", "0003", "bb", "company3");

4、查看hbase已经插入了对应的内容

代码语言:javascript
复制
INSERT OVERWRITE TABLE hbase_table_test SELECT key, "0002" AS id, "abc" AS name, "company2" AS company FROM hbase_table_test WHERE key="03";

修改成功。

5、验证内部表和外部表区别

代码语言:javascript
复制
CREATE TABLE `hbase_table_no`(
    `key` int,
    `id` string,
    `name` string,
    `company` string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping'=':key,C1:ID,C1:Name,C1:Company')
TBLPROPERTIES ('hbase.mapred.output.outputtable'='no','hbase.table.name'='no');
CREATE EXTERNAL TABLE `hbase_table_no1`(
    `key` int,
    `id` string,
    `name` string,
    `company` string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping'=':key,C1:ID,C1:Name,C1:Company')
TBLPROPERTIES ('hbase.mapred.output.outputtable'='no1','hbase.table.name'='no1');

5、分别插入数据后,drop table

代码语言:javascript
复制
insert into hbase_table_no values (1, "id", "name", "com");
insert into hbase_table_no1 values (1, "id", "name", "com");
drop table hbase_table_no;
drop table hbase_table_no1;
代码语言:javascript
复制
代码语言:javascript
复制
6、查看hbase,发现只有no1存在。
代码语言:javascript
复制

4.总结

1、“hbase mapredcp|tr : ,”为将前面输入的“:”替换为“,”。

2、建立的hive表只是建立的映射关系,任何修改会在HBase表中生效。

3、无论内部表或者外部表都可以指定一个不存在的HBase表,两种表的区别在于内部表多了两个属性

代码语言:javascript
复制
'TRANSLATED_TO_EXTERNAL'='TRUE'
'external.table.purge'='TRUE'
代码语言:javascript
复制

4、在Hive中drop table内部表(不加EXTERNAL)会删除掉关联的HBase表,在Hive中drop table外部表(加EXTERNAL)会保留关联的HBase表。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档