Hive系列文章
- Hive表的基本操作
- Hive中的集合数据类型
- Hive动态分区详解
- hive中orc格式表的数据导入
- Java通过jdbc连接hive
- 通过HiveServer2访问Hive
- SpringBoot连接Hive实现自助取数
- hive关联hbase表
- Hive udf 使用方法
- Hive基于UDF进行文本分词
- Hive窗口函数row number的用法
- 数据仓库之拉链表
猜你喜欢
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表是联系在一起的,对应关系:
| hive | hbase |
|---|---|
| id | :key,即对应hbase表的rowkey |
| name | 对应hbase的info列簇name字段 |
| hive表名:test.test | hbase表名: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的数据存储与压缩
大数据组件重点学习这几个