Hadoop入门——Hive数据存储模型

hive中的数据分为真实数据与元数据,一般来说Hive的存储格式是指真实数据的存储格式。

Hive常用的存储格式(四种)

存储格式存储格式说明
TEXTFILE文本文件格式,按行存储(常见:txt、csv、tsv)Hive默认存储格式,支持使用Gzip压缩,但压缩后失去了使用集群并行处理的优势
SEQUENCEFILE“二进制序列化过的Key/Value字节流”组成的文本存储文件格式Hive无法直接导入,可分割的
RCFILE面向列的数据存储格式遵循“先水平划分,再垂直划分”的设计理念,可分割的
ORCFILE对RCFILE的优化格式支持压缩比很高的压缩算法,文件可切分、提供多种索引,支持复杂的数据结构

Hive数据单元

Hive所有真实数据都存储在HDFS中,这样更利于对数据做分布式计算。为了有效地对数据进行管理,根据粒度大小,进行真实数据划分如下数据单元:

  1. 数据库:在HDFS中表现为hive.metastore.warehouse.dir目录下的一个文件夹,本质用于避免命名冲突的命名空间。

  2. 表:由列构成,在表上可进行过滤、映射、连接和联合操作。

分类说明

内部表      

由Hive管理,类似与RDBMS中的表(删除后均被删除)
外部表真实数据不被Hive管理。已经存在HDFS中的数据,与内部表元数据组织是相同的,但数据存放位置是任意的(删除后只删除元数据,不删除真实数据)
  1. 分区:按指定的键分为多个分区。

  2. 分桶:同一个目录下根据哈希散列之后的多个文件。

下图为划分数据存储的模型和示例:

注意:Hive表没有主键;不支持行级操作;不支持批量update操作,但可以先删除、再添加;分区和分桶可以极大地提升数据查询效率

拓展:MySQL内、左、右连接

MySQL内、左、右、全连接我们以表与表间的连接为例

内连接

内连接查询的是两张表或者多个表的交集,也就是两张表的公共部分。

select * from A,B on A.id = b.id

左连接

左连接也称为左外链接,是将左表和左右表交集的组合。

左连接以左表为基础,根据on 后给出的条件将两表连接起来,最终的结果会将左表所有的信息列出,而右表只列出on条件与左表满足的部分,其余部分为空。

select * from A left join B on A.id = B.id;

右连接

右连接也称为右外链接,是将右表和左右表交集的组合。

右连接以右表为基础,根据on 后给出的条件将两表连接起来,最终的结果会将右表所有的信息列出,而左表只列出on条件与右表满足的部分,其余部分为空。

select * from A right join B on A.id = B.id;

最后,本篇文章是基于我所学所知进行的知识总结,如有误论,虚心接受指正。参考文献是《Hadoop数据仓库实战》,感兴趣的小伙伴可以对其进行深入阅读。(2024/03/11)

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值