Hive映射已存在的HBase表

本文介绍了如何在Hive中映射已存在的HBase表,包括确保HBase相关jar包版本一致,配置Hive的hbase-site.xml,创建Hive外部表并指定字段到HBase列的映射,以及使用Impala验证映射。同时,列举了一些Hive的常用操作命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先要确保/usr/lib/hive/lib下HBase的jar包的版本要和实际环境中HBase的版本一致,需要用/usr/lib/hbase/li/目录下得jar包做软连接,如下:
ln -s /usr/lib/hbase/lib/hbase-client-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-client.jar
ln -s /usr/lib/hbase/lib/hbase-common-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-common.jar
ln -s /usr/lib/hbase/lib/hbase-hadoop2-compat-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-hadoop2-compat.jar
ln -s /usr/lib/hbase/lib/hbase-hadoop-compat-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-hadoop-compat.jar
ln -s /usr/lib/hbase/lib/hbase-protocol-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-protocol.jar
ln -s /usr/lib/hbase/lib/hbase-server-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-server.jar
ln -s /usr/lib/hbase/lib/htrace-core-3.0.4.jar /usr/lib/hive/lib/htrace-core.jar
ln -s /usr/lib/zookeeper/zookeeper.jar /usr/lib/hive/lib/zookeeper.jar 
执行脚本:
#!/bin/sh
#HOST是部署HBase的节点
HOST=(172.20.13.180 172.20.13.182 172.20.13.183 172.20.13.186 172.20.13.200 172.20.13.209 172.20.13.212 172.20.13.213 172.20.13.215)
for host in ${HOST[@]}
do
  echo $host
  ssh $host "ln -s /usr/lib/hbase/hbase-client-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-client.jar"
  ssh $host "ln -s /usr/lib/hbase/hbase-common-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-common.jar"
  ssh $host "ln -s /usr/lib/hbase/hbase-hadoop2-compat-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-hadoop2-compat.jar"
  ssh $host "ln -s /usr/lib/hbase/hbase-hadoop-compat-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-hadoop-compat.jar"
  ssh $host "ln -s /usr/lib/hbase/hbase-protocol-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-protocol.jar"
  ssh $host "ln -s /usr/lib/hbase/hbase-server-1.0.0-cdh5.4.3.jar /usr/lib/hive/lib/hbase-server.jar"
  ssh $host "ln -s /usr/lib/hbase/lib/htrace-core-3.0.4.jar /usr/lib/hive/lib/htrace-core.jar"
  ssh $host "ln -s /usr/lib/zookeeper/zookeeper.jar /usr/lib/hive/lib/zookeeper.jar "
done

2、在UDH Hive配置界面"自定义配置文件: hive-site.xml -> 添加属性":
<name>hbase.zookeeper.quorum</name>
<value>bigdata-08,bigdata-09,bigdata-10,bigdata-11,bigdata-07</value>

<name>hive.aux.jars.path</name>
<value>file:///usr/lib/hbase/lib/htrace-core.jar,file:///usr/lib/hbase/lib/hive-hbase-handler.jar,file:///usr/lib/hbase/lib/zookeeper.jar ,file:///usr/lib/hbase/lib/hbase-client.jar,file:///usr/lib/hbase/lib/hbase-common.jar,file:///usr/lib/hbase/lib/hbase-hadoop2-compat.jar,file:///usr/lib/hbase/lib/hbase-hadoop-compat.jar,file:///usr/lib/hbase/lib/hbase-protocol.jar,file:///usr/lib/hbase/lib/hbase-server.jar</value>

<name>zookeeper.znode.parent</name>
<value>/hbase</value>

3、Hive 映射已存在的Hbase表
CREATE EXTERNAL TABLE yc_data(
rkey STRING,
version STRING,
logstash STRING,
tags STRING,
timestamp STRING,
message STRING,
host STRING,
type STRING,
path STRING,
sourceip STRING,
ts STRING,
request STRING,
httpstatus STRING,
pageurl STRING,
browserinfo STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES(
"hbase.columns.mapping"=":key,log:@version,log:logstash,log:tags,log:@timestamp,log:message,log:host,log:type,log:path,log:sourceip,log:ts,log:request,log:httpstatus,log:pageurl,log:browserinfo"
)
TBLPROPERTIES(
"hbase.table.name"="yc_data"
);
上面 DDL语句,WITH SERDEPROPERTIES选项指定Hive外部表字段到HBase列的映射,其中":key"对应HBase中的RowKey,Hive中名称为"rkey",其余的就是列簇log中的列名;最后在 TBLPROPERTIES中指定了HBase中要进行映射的表名。

4、使用impala验证映射的Hbase表
Impala共享Hive的Metastore,这时需要同步metadata,可以通过在Hue中impala查询界面执行同步命令:
INVALIDATE METADATA
 然后用以下命令可以查看到映射HBase中表的结构:
DESCRIBE yc_data

5、Hive常用命令
展示所有表:
hive> SHOW TABLES;
        lists all the tables
hive> SHOW TABLES '.*s';
lists all the table that end with 's'. 

显示表的结构信息
hive> DESCRIBE invites;
        shows the list of columns

更新表的名称:
hive> ALTER TABLE source RENAME TO target;

添加新一列
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');
 
删除表:
hive> DROP TABLE yc_data;

删除表中数据,但要保持表的结构定义
hive> dfs -rm -r /user/hive/warehouse/yc_data

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值