阿里云HBase需要借助外部Hive对多表进行关联分析,本文介绍如何使用E-MapReduce(简称EMR)上的Hive关联阿里云HBase的表。
前提条件
- 已创建DataLake集群。详细步骤,请参见创建集群。
- 已创建与EMR在同一地域下且共用VPC的HBase实例。
说明 本文示例使用HBase标准版(2.0版本),暂不支持HBase增强版(Lindorm)。
步骤一:新增Hive配置
- 进入配置页面。
- 登录EMR on ECS控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 在集群管理页面,单击目标集群右侧操作列的集群服务。
- 单击Hive服务区域的配置。
- 单击hbase-site.xml页签。
- 添加以下配置项。
新增配置项的具体操作,请参见添加配置项。
配置项 配置内容 hbase.zookeeper.quorum 填写HBase集群的ZooKeeper链接地址(专有网络 )。例如: hb-xxxx-master1-001.hbase.rds.aliyuncs.com:2181
、hb-xxxx-master2-001.hbase.rds.aliyuncs.com:2181
、hb-xxxx-master3-001.hbase.rds.aliyuncs.com:2181
。
步骤二:查看HBase表
说明 HBase Shell的获取方式,请参见HBase Shell使用介绍。
- 执行以下命令,连接HBase。
hbase shell
- 执行list命令,查看HBase表中hive_hbase_table或者hbase_table是否存在。
- 不存在:请执行步骤四:创建HBase内表。
- 存在:请执行步骤三:创建HBase外部关联表。
步骤三:创建HBase外部关联表
- 执行以下命令,创建外部表。
create 'hbase_table','f'
- 执行以下命令,向表中插入数据。
- 插入第一条数据。
put 'hbase_table','1122','f:col1','hello'
- 插入第二条数据。
put 'hbase_table','1122','f:col2','hbase'
- 插入第一条数据。
- 执行以下命令,创建HBase外部关联表并查看数据。
- 在Hive中创建HBase外部关联表。
create external table hbase_table(key int,col1 string,col2 string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = "f:col1,f:col2") TBLPROPERTIES ("hbase.table.name" = "hbase_table", "hbase.mapred.output.outputtable" = "hbase_table");
- 查看关联表信息。
select * from hbase_table;
返回表信息如下:1122 hello hbase
- 在Hive中删除表hbase_table。
drop table hbase_table;
- 在HBase中执行list命令,查看表hbase_table是否存在。若返回信息显示表hbase_table存在,则表明删除Hive中的表并不影响HBase中已存在的表。
- 在Hive中创建HBase外部关联表。
步骤四:创建HBase内表
- 输入hive命令进入Hive CLI命令行。
- 执行以下命令,创建HBase表。
CREATE TABLE hive_hbase_table(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "hive_hbase_table", "hbase.mapred.output.outputtable" = "hive_hbase_table");
- 执行以下命令,向hive_hbase_table表中插入数据。
insert into hive_hbase_table values(212,'bab');
- 执行以下命令,在Hive中查看表信息。
select * from hive_hbase_table
- 执行以下命令,在HBase中写入数据并在Hive中查看。
- 在HBase中写入数据。
put 'hive_hbase_table','132','cf1:val','acb'
- 在Hive中查看写入的数据。
select * from hive_hbase_table;
返回信息如下:132 acb 212 bab
- 在HBase中写入数据。
- 执行以下命令,删除Hive表并查看HBase表情况。
- 在Hive中删除表hive_hbase_table。
drop table hive_hbase_table;
- 在HBase中查看表hive_hbase_table。
scan hive_hbase_table;
返回信息会提示表已经不存在。
- 在Hive中删除表hive_hbase_table。
文档内容是否对您有帮助?