hive数据导入云hbase

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 网络环境 专线:用户需要把hbase集群的VPC相关网络信息配置到专线里面,可直通hbase环境 公有云虚拟机VPC环境:选择和hbase通VPC 其他:需要开hbase公网 注意:默认导入hbase数据,依赖的hbase-common、hbase-client、hbase-server、hbase-protocol使用社区的包即可。

网络环境

  1. 专线:用户需要把hbase集群的VPC相关网络信息配置到专线里面,可直通hbase环境
  2. 公有云虚拟机VPC环境:选择和hbase通VPC
  3. 其他:需要开hbase公网
  4. 注意:默认导入hbase数据,依赖的hbase-common、hbase-client、hbase-server、hbase-protocol使用社区的包即可。如果是公网需要使用云hbase发布的相关包

方案一:hive关联hbase表方式

  1. 适用场景:数据量不大4T以下(因为需要走hbase的api导入数据)
  2. 从hbase页面获取zk连接地址,并用下述方式启动hive客户端
hive  --hiveconf hbase.zookeeper.quorum=xxxx
  1. hbase表不存在的情况
  • 创建hive表hive_hbase_table映射hbase表base_table,会自动创建hbase表hbase_table,且会随着hive表删除而删除。这里需要指定hive的schema到hbase schema的映射关系。关于类型可参考Hive/HBaseIntegration
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" = "hbase_table", 
"hbase.mapred.output.outputtable" = "hbase_table");
  • 创建一张原始的hive表,准备一些数据
create table hive_data (mykey int,myval string);
insert into hive_data values(1,"www.ymq.io");
  • 把hive原表hive_data中数据,通过hive表hive_hbase_table导入到hbase的表hbase_table中
insert into table hive_hbase_table select * from hive_data;
  • 查看hbase表hbase_table中是否有数据

undefined

  1. hbase表存在的情况
  • 创建hive的外表关联hbase表,注意hive schema到hbase schema的映射关系。删除外表不会删除对应hbase表
CREATE EXTERNAL TABLE hive_hbase_external_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" = "hbase_table", 
"hbase.mapred.output.outputtable" = "hbase_table");
  • 其他导入数据相关同2

方案二:hive表生成hfile,通过bulkload导入到hbase

  1. 适用场景:数据量大(4T以上)
  2. 把hive数据转换为hfile
  • 启动hive并添加相关hbase的jar包
add jar /usr/lib/hive-current/lib/hive-hbase-handler-2.3.3.jar;
add jar /usr/lib/hive-current/lib/hbase-common-1.1.1.jar;
add jar /usr/lib/hive-current/lib/hbase-client-1.1.1.jar;
add jar /usr/lib/hive-current/lib/hbase-protocol-1.1.1.jar;
add jar /usr/lib/hive-current/lib/hbase-server-1.1.1.jar;
  • 创建一个outputformat为HiveHFileOutputFormat的hive表

    • 其中/tmp/hbase_table_hfile/cf_0是hfile保存到hdfs的路径,cf_0是hbase family的名字
create table hbase_hfile_table(key int, cf_0_c0 string) 
stored as
INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.hbase.HiveHFileOutputFormat'
TBLPROPERTIES ('hfile.family.path' = '/tmp/hbase_table_hfile/cf_0');
  • 把原始数据表的数据通过hbase_hfile_table表保存为hfile
insert into table hbase_hfile_table select * from hive_data;
  • 查看对应hdfs路径是否生成了hfile

undefined

  1. 通过bulkload将数据导入到hbase表中
  • 使用阿里云hbase客户端创建具有上面对应family的hbase表
hbase(main):012:0> create 'hbase_hfile_load_table','cf_0'
  • 下载云hbase客户端,配置hbase-site.xml,并将hdfs-site.xml、core-site.xml拷贝到hbase/conf目录
 wget http://public-hbase.oss-cn-hangzhou.aliyuncs.com/installpackage/alihbase-1.1.4-bin.tar.gz .
 vi conf/hbase-site.xml
 <property>
         <name>hbase.zookeeper.quorum</name>
         <value>xxx</value>
 </property>
  • 执行bulkload导入到hbase表中
bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles hdfs://maste:port/tmp/hbase_table_hfile/  hbase_hfile_load_table
  • 在hbase表hbase_hfile_load_table查看数据是否导入
参考资料
相关实践学习
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
目录
相关文章
|
SQL 存储 分布式数据库
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
233 0
|
2月前
|
SQL 数据库 HIVE
hive数仓 ods层增量数据导入
根据业务需求,当表数据量超过10万条时采用增量数据导入,否则全量导入。增量导入基于`create_date`和`modify_date`字段进行,并确保时间字段已建立索引以提升查询效率。避免在索引字段上执行函数操作。创建增量表和全量表,并按日期进行分区。首次导入全量数据,后续每日新增或变更数据保存在增量表中,通过全量表与增量表的合并保持数据一致性。
78 13
|
6月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
241 7
|
6月前
|
SQL 分布式计算 关系型数据库
Sqoop数据导入到Hive表的最佳实践
Sqoop数据导入到Hive表的最佳实践
|
6月前
|
SQL 分布式数据库 HIVE
Hbase 和Hive表关联
Hbase 和Hive表关联
69 0
|
6月前
|
SQL 分布式数据库 HIVE
Hbase二级索引_Hive on Hbase 及phoenix详解
Hbase二级索引_Hive on Hbase 及phoenix详解
72 0
|
6月前
|
SQL 分布式计算 分布式数据库
HBase 和 Hive 你能分清楚吗?(转拉勾教育)
HBase 和 Hive 你能分清楚吗?(转拉勾教育)
75 0
|
11月前
|
存储 SQL 分布式数据库
分布式数据恢复-hbase+hive分布式存储数据恢复案例
hbase+hive分布式存储数据恢复环境: 16台某品牌R730XD服务器节点,每台物理服务器节点上有数台虚拟机,虚拟机上配置的分布式,上层部署hbase数据库+hive数据仓库。 hbase+hive分布式存储故障&初检: 数据库文件被误删除,数据库无法使用。 通过现场对该分布式环境的初步检测,发现虚拟机还可以正常启动,虚拟机里面的数据库块文件丢失。好在块文件丢失之后没有对集群环境写入数据,底层数据损坏可能性比较小。
|
6月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
185 1
|
22天前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
23 0