Hive关联Hbase表

1,583 阅读3分钟

Hive系列文章

  1. Hive表的基本操作
  2. Hive中的集合数据类型
  3. Hive动态分区详解
  4. hive中orc格式表的数据导入
  5. Java通过jdbc连接hive
  6. 通过HiveServer2访问Hive
  7. SpringBoot连接Hive实现自助取数
  8. hive关联hbase表
  9. Hive udf 使用方法
  10. Hive基于UDF进行文本分词
  11. Hive窗口函数row number的用法
  12. 数据仓库之拉链表

猜你喜欢
Hadoop3数据容错技术(纠删码)
Hadoop 数据迁移用法详解
Flink实时计算topN热榜
数仓建模分层理论
一文搞懂Hive的数据存储与压缩
大数据组件重点学习这几个

Hbase是一种NoSQL数据库,这意味着它不像传统的RDBMS数据库那样支持SQL作为查询语言。一种方法是使用hive关联hbase表,可以完成对hbase表的数据插入(insert)和查询(select)。

新建hive表关联hbase表

hive关联的hbase表,对应的hbase表如果不存在,会自动创建,test是hbase的一个namespace,相当于mysql中的database需要提前建好:create_namespace 'test'

create table if not exists test.test
(
id string comment '用户id',
name string comment '姓名'
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping" = ":key,info:name")
tblproperties("hbase.table.name" = "test:test");

上面的命令创建了一张hive表,跟hbase表是联系在一起的,对应关系:

hivehbase
id:key,即对应hbase表的rowkey
name对应hbase的info列簇name字段
hive表名:test.testhbase表名:test:test

表名可以不相同的,但是通常为了统一,表命建得相同。

通过hive插入数据到hbase表

如果有这么一个需求,我们想把hive一张结果表存一份数据到hbase,可以使用insert select方式,将hive表的数据插入到hbase表中去。假设现在有一张hive表test.test2

hive> select * from test.test2;
OK
1	tom
2	jack
3	alice

将hive表test.test2的数据导入到hbase表:

insert into test.test select * from test.test2;

这就将数据导入hbase表了,这时候不管是在hive里面,还是hbase shell里面,都是可以直接查询到数据的。

hive> select * from test.test;
OK
1	tom
2	jack
3	alice

从hbase里面scan也是有数据的。

hbase(main):005:0> scan 'test:test'
ROW                              COLUMN+CELL                                                                                
 1                               column=info:name, timestamp=1590221288866, value=tom                                       
 2                               column=info:name, timestamp=1590221288866, value=jack                                      
 3                               column=info:name, timestamp=1590221288866, value=alice                                     

实际数据是存储在hbase数据目录里面的:

[hadoop@slave3 ~]$ hdfs dfs -ls /hbase/data/test/test
Found 3 items
drwxr-xr-x   - hadoop supergroup          0 2020-05-23 16:05 /hbase/data/test/test/.tabledesc
drwxr-xr-x   - hadoop supergroup          0 2020-05-23 16:05 /hbase/data/test/test/.tmp
drwxr-xr-x   - hadoop supergroup          0 2020-05-23 16:05 /hbase/data/test/test/722a0bfced3a534029e5093ebba1d55c
[hadoop@slave3 ~]$ hdfs dfs -ls /user/hive/warehouse/test.db/test

对hbase表做统计查询

有时候我们想对hbase表的数据进行统计分析,可以通过mapreduce / spark API,通过代码逻辑统计分析,但是这些成本有点高,能用sql的尽量用sql做大数据分析,这时候hive关联hbase表查询就派上用场了。

hive> select name, count(1) from test.test group by name;

alice	1
jack	1
tom	1

关注公众号:大数据技术派,学习大数据技术。

猜你喜欢
Hadoop3数据容错技术(纠删码)
Hadoop 数据迁移用法详解
Flink实时计算topN热榜
数仓建模分层理论
一文搞懂Hive的数据存储与压缩
大数据组件重点学习这几个