【Hive】如何在 Hive 中创建外部表映射 Hbase 中已存在的表

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 【Hive】如何在 Hive 中创建外部表映射 Hbase 中已存在的表

文章目录


一、上传完整的jar文件到hive/lib中


二、修改hive-site.xml


三、修改hive-env.sh


四、在hive和hbase中分别创建相关联的表并通过hive向hbase表中加载数据


五、在hive中创建外部表映射hbase中已存在的表


六、特别注意


一、上传完整的jar文件到hive/lib中


删除hive/lib下所有文件


解压上传hive所有的jar到该目录下


二、修改hive-site.xml


<name>hbase.zookeeper.quorum</name>
    <value>ghym,ghys1,ghys2</value>#自定义的zookeeper集群电脑名与hbase建立联系
    <name>hive.zookeeper.quorum</name>
    <value>ping1,ping2,ping4</value>#自定义的zookeeper集群电脑名与hive建立联系
    <name>hive.aux.jars.path</name>#将jar文件的位置指定为本地目录,否则默认在HDFS上寻找jar
    <value>file:///home/hadoop/hive-2.3.3/lib/hbase-server-1.1.1.jar,file:///home/hadoop/hive-2.3.3/lib/hbase-client-1.1.1.jar,file:///home/hadoop/hive-2.3.3/lib/hive-hbase-handler-2.2.0.jar,file:///home/hadoop/hive-2.3.3/lib/zookeeper-3.4.6.jar</value>

三、修改hive-env.sh


export HADOOP_HOME=/home/hadoop/hadoop-2.9.0#hadoop目录
export HBASE_HOME=/home/hadoop/hbase-1.2.6#hbase目录
export HIVE_CONF_DIR=/home/hadoop/hive-2.3.3/conf#hive配置文件目录

四、在hive和hbase中分别创建相关联的表并通过hive向hbase表中加载数据


CREATE TABLE hive表名(key int, value1 string, value2 int,...)#hive表列名和数据类型 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" = ":key,a:b,a:c,..."#hbase表rowkey,列族:列名
)TBLPROPERTIES(
"hbase.table.name"="hbase表名",
"hbase.mapred.output.outputtable"="hbase表名"
);
#不支持load data命令,通过insert从其他表查询数据加载
insert overwrite table hive表名 select eno,ename,... from emp;


关键字


  1. STORED BY 表示使用hive配置中的类完成向hbase中存储数据


  1. WITH SERDEPROPERTIES 表示创建hive临时对应hbase表的列族名称


  1. TBLPROPERTIES 表示对应hbase中表的名称


  1. hbase.mapred.output.outputtable表示mapreduce操作向hbase表中输出


五、在hive中创建外部表映射hbase中已存在的表


CREATE EXTERNAL TABLE hive表名(key int, value1 string, value2 int,...)#hive表列名和数据类型 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" = ":key,a:b,a:c,..."#hbase表rowkey,列族:列名
)TBLPROPERTIES(
"hbase.table.name"="hbase表名",
"hbase.mapred.output.outputtable"="hbase表名"
);

特点


  1. 建表或映射表的时候如果没有指定:key则第一个列默认就是行键


  1. HBase对应的Hive表中没有时间戳概念,默认返回的就是最新版本的值


  1. 由于HBase中没有数据类型信息,所以在存储数据的时候都转化为String类型


六、特别注意


  1. 对HBase表进行预分区,增大其MapReduce作业的并行度


  1. 合理的设计rowkey使其尽可能的分布在预先分区好的Region上


  1. 通过set hbase.client.scanner.caching设置合理的扫描缓存


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4月前
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
89 0
|
4月前
|
机器学习/深度学习 分布式计算 Hadoop
一种HBase表数据迁移方法的优化
一种HBase表数据迁移方法的优化
80 0
|
4月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
190 7
|
3月前
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
157 1
|
4月前
|
SQL Java 分布式数据库
实现HBase表和RDB表的转化(附Java源码资源)
该文介绍了如何将数据从RDB转换为HBase表,主要涉及三个来源:RDB Table、Client API和Files。文章重点讲解了RDB到HBase的转换,通过批处理思想,利用RDB接口批量导出数据并转化为`List&lt;Put&gt;`,然后导入HBase。目录结构包括配置文件、RDB接口及实现类、HBase接口及实现类,以及一个通用转换器接口和实现。代码中,`RDBImpl`负责从RDB读取数据并构造`Put`对象,`HBaseImpl`则负责将`Put`写入HBase表。整个过程通过配置文件`transfer.properties`管理HBase和RDB的映射关系。
45 3
实现HBase表和RDB表的转化(附Java源码资源)
|
4月前
|
SQL 关系型数据库 MySQL
Hive 表注释乱码解决
Hive元数据在MySQL默认使用`latin1`字符集导致注释乱码。可通过修改MySQL配置文件`/etc/my.cnf`,在`[mysqld]`和末尾添加`character-set-server=utf8`等设置,重启MySQL。然后在Hive数据库中调整表字段、分区字段、索引注释的字符集。注意,这仅对新表生效。测试创建带注释的Hive表,问题解决。
|
4月前
|
SQL HIVE
Hive表删除数据不支持使用Delete From...
Hive表删除数据不支持使用Delete From...
136 0
|
4月前
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
|
4月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
105 1
|
4月前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
75 0