本文是对[1][2]的整理以及在新版本上的验证

-----------------------------------------------------------------------------------------

环境版本

大数据组件 版本
Hadoop 3.1.2
Zookeeper 3.6.0
Hbase 2.2.4
Hive 3.0.0

-------------------------------------------------

实验前提:

启动HDFS集群

启动Zookeeper集群

启动Hbase集群

启动Hive的metastore和hiveserver2

-------------------------------------------------

  Hive建表 hbase中插入数据 查询hive
hbase->hive内表

CREATE TABLE member(
m_id string ,
address_contry string ,
address_province string ,
address_city string ,
info_age string ,
info_birthday string ,
info_company string
)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'    
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,address:contry,address:province,address:city,info:age,info:birthday,info:company")    
TBLPROPERTIES("hbase.table.name" = "member");

put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'

put'member','scutshuxue','address:contry','china'
put'member','scutshuxue','address:province','zhejiang' 
put'member','scutshuxue','address:city','hangzhou' 
put'member','zhangsan','info:age','25'
put'member','zhangsan','info:birthday','1997-06-17'
put'member','zhangsan','info:company','alibaba'
put'member','zhangsan','address:contry','china'
put'member','zhangsan','address:province','sichuan' 
put'member','zhangsan','address:city','chendu'

select * from member;

hbase->hive外表

CREATE EXTERNAL TABLE student(
m_id string ,
address_contry string ,
address_province string ,
address_city string ,
info_age string ,
info_birthday string ,
info_company string
)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'    
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,address:contry,address:province,address:city,info:age,info:birthday,info:company")    
TBLPROPERTIES("hbase.table.name" = "student");

create 'student','m_id','address','info'

put'student','scutshuxue','info:age','24'
put'student','scutshuxue','info:birthday','1987-06-17'
put'student','scutshuxue','info:company','alibaba'
put'student','scutshuxue','address:contry','china'
put'student','scutshuxue','address:province','zhejiang'
put'student','scutshuxue','address:city','hangzhou'
put'student','zhangsan','info:age','25'
put'student','zhangsan','info:birthday','1997-06-17'
put'student','zhangsan','info:company','alibaba'
put'student','zhangsan','address:contry','china'
put'student','zhangsan','address:province','sichuan'
put'student','zhangsan','address:city','chendu'

select * from student;

调试tips:

Hive用beeline建表的时候可能会卡住,这个时候可以退出beeline>引擎,采用老的hive>引擎

注意:

上述表格中的任何一条命令,如果超过8秒(我的是5秒,普通的4核8线程电脑),一般是由于故障卡住了,不要盲目等待。

如果hive的metastore清空,想要重新操作,那么上述过程中,必须先清除hbase中的数据,清除过程以[3]为准

#------------------列映射---------------------------------

上半部分是全部数据从hbase映射到hive,

如果只想映射一部分数据呢?列映射来了!

列映射表格关系(根据不同映射需求,hbase->hive)

Hbase表 Hive表 映射方法
index1 hbase_table1 列映射(单列)
index1 hbase_table2 多列映射
index1 hbase_table3 列簇映射

index1表结构以及实验数据

Hbase表名:index1
Row Key 列簇(column family):cf0
cf0:indexId cf0:muMac
11 11  
13 11  
9696 100  
9901   uzzu
990111 11  
990_11aa_aza 11  
  hbase操作
建立index1 create "index1","cf0"
传入数据操作

create "index1","cf0"
put 'index1',11,'cf0:indexId',11
put 'index1',13,'cf0:indexId',11

scan 'index1'

put 'index1',9696,'cf0:indexId',100

put 'index1',9901,'cf0:muMac','uzzu'
put 'index1',990111,'cf0:indexId',11
put 'index1','990_11aa_aza','cf0:indexId',11

  Hive操作 查询语句
单列映射 CREATE EXTERNAL TABLE hbase_table_1(key string, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES("hbase.columns.mapping" = "cf0:indexId") 
TBLPROPERTIES("hbase.table.name" = "index1", "hbase.mapred.output.outputtable" = "index1");
 
select * from hbase_table_1;
多列映射 CREATE EXTERNAL TABLE hbase_table_2(key int, indexId string, muMac string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf0:indexId,cf0:muMac") 
TBLPROPERTIES("hbase.table.name" = "index1", "hbase.mapred.output.outputtable" = "index1");
select * from hbase_table_2;
列簇映射 CREATE EXTERNAL TABLE hbase_table_3(value map<string,string>,row_key string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf0:,:key") 
TBLPROPERTIES("hbase.table.name" = "index1", "hbase.mapred.output.outputtable" = "index1");
select * from hbase_table_3;

hbase_table_1结果:

+--------------------+----------------------+
| hbase_table_1.key  | hbase_table_1.value  |
+--------------------+----------------------+
| 11                 | 11                   |
| 13                 | 11                   |
| 9696               | 100                  |
| 990111             | 11                   |
| 990_11aa_aza       | 11                   |
+--------------------+----------------------+

hbase_table_2结果:

+--------------------+------------------------+----------------------+
| hbase_table_2.key  | hbase_table_2.indexid  | hbase_table_2.mumac  |
+--------------------+------------------------+----------------------+
| 11                 | 11                     | NULL                 |
| 13                 | 11                     | NULL                 |
| 9696               | 100                    | NULL                 |
| 9901               | NULL                   | uzzu                 |
| 990111             | 11                     | NULL                 |
| NULL               | 11                     | NULL                 |
+--------------------+------------------------+----------------------+

hbase_table_3结果:

+----------------------+------------------------+
| hbase_table_3.value  | hbase_table_3.row_key  |
+----------------------+------------------------+
| {"indexId":"11"}     | 11                     |
| {"indexId":"11"}     | 13                     |
| {"indexId":"100"}    | 9696                   |
| {"muMac":"uzzu"}     | 9901                   |
| {"indexId":"11"}     | 990111                 |
| {"indexId":"11"}     | 990_11aa_aza           |
+----------------------+------------------------+

#------------------列映射---------------------------------

Reference:

[1]hive:hbase表映射到hive中

[2]Hbase表映射Hive表三种方法

[3]HBase表创建、删除、清空

hbase映射为hive表(转载+整理+自己验证)相关推荐

  1. Hbase中的列式表映射到hive的外表

    在做数据ETL中,可能原始数据在列式存储Hbase中,这个时候,如果我们想清洗数据,可以考虑把Hbase表映射为Hive的外表,然后使用Hive的HQL来清除处理数据,具体过程参考下面例子: 步骤 1 ...

  2. Hive 与 Hbase表映射(内部表与外部表),Hbase常用命令

    应用场景 1.将ETL操作的数据存入HBase 2.Hbase作为Hive的数据源 构建低延迟的数据仓库 Hive表映射至Hbase Hbase上有表 -> 外部表 创建Hive表映射HBase ...

  3. Hbase表映射Hive表三种方法

    文章目录 一.准备 1.1 官方文档 1.2 依赖服务 二.表映射 2.1 列映射(单列) 2.2 列映射(多列) 2.3 列族映射 三.总结 一.准备 1.1 官方文档 https://cwiki. ...

  4. hive建立内部表映射hbase_Hive 建外链表到 Hbase(分内部表、外部表两种方式)

    一. Hive 建内部表,链到hbase :特点:Hive drop表后,Hbase 表同步删除 drop table if exists hbase_kimbo_test1; CREATE TABL ...

  5. Hive表操作及管理

    转载请注明出处:http://blog.csdn.net/u012842205/article/details/72765667 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映 ...

  6. 【遇见Doris】Doris基于Hive表的全局字典设计与实现

    感谢7月25日来参加 Doris 与 Dolphin Scheduler 合作举办的线上 Meetup 的小伙伴们,现在为大家带来 Meetup 的内容. 本次 Meetup 请到了来自百度.奇安信. ...

  7. 【原创】大叔经验分享(65)spark读取不到hive表

    spark 2.4.3 spark读取hive表,步骤: 1)hive-site.xml hive-site.xml放到$SPARK_HOME/conf下 2)enableHiveSupport Sp ...

  8. date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表

    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图. Fayson的github: https://github.com/fayson/cdhproject 提示 ...

  9. hive 表的常用操作

    使用load 方式加载数据到Hive 表中,注意分区表加载数据的特殊性 如何保存HiveQL 查询结果:保存到表中,保存到本地文件(注意指定列分隔符) 常见查询练习,如group by.having. ...

最新文章

  1. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv3详解及复现
  2. c语言中ai是什么,AICODE在C语言教学中应用研究.doc
  3. html 如何改变图片形状,图形变换的三种方式是什么?
  4. android 自动化测试_Android自动化测试探索之代码覆盖率统计
  5. 101个MySQL调试和优化技巧
  6. 19.简报配置(Newsletter Configuration)
  7. Windows XP Embedded 官方下载地址
  8. c++ string取子串_LeetCode第三题 “无重复字符的最长子串” 从低效率到高效率
  9. mysql在网页上显示乱码_计算机毕设答辩时网页报错怎么办
  10. windows下cmd批量复制文件
  11. 经典算法大全之费式数列
  12. 电力能耗监测在山东青岛机场的应用
  13. 详解汽车外饰行业如何利用MES系统进行生产防错?
  14. 15--jQuery插件大全-- 使用jsoup爬取酷我音乐和微博热搜数据
  15. 工具篇:这可能是全 GitHub 最牛逼的抢票神器!
  16. ClickHouse 来自战斗民族的OLAP利器
  17. 1196 找到特殊的四位数
  18. Java新手小白入门篇 项目 - 深海杀手
  19. C#--集合添加数据(ArrayList and list)
  20. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

热门文章

  1. Netty中ByteBuf 的零拷贝
  2. codevs 1779 单词的划分
  3. WP8.1开发中关于如何显示.gif格式动态格式图片方法
  4. (原创)c#学习笔记08--面向对象编程简介02--OOP技术05--运算符重载
  5. [Linux]进程(十二)--task_struct结构体
  6. Exceptions(小节)
  7. [转]VS2010中水晶报表安装应用及实例
  8. 第一个 Metro程序(空白应用程序)
  9. MSSQL数据库C#操作类(SQLHELPER类的修改版)
  10. JS----javascript原型和原型链