Hive系列 (九):Hive数据存储

本文介绍了Hive数据存储的基本概念,包括行存储、列存储和分片。重点讨论了Hive的存储格式,如TextFile、ORCFile和Parquet,以及它们在查询速度和压缩效率上的差异。同时,文章还探讨了各种压缩算法,如Snappy、LZO和Gzip,强调了列式存储在大数据分析中的优势。
摘要由CSDN通过智能技术生成

Hive系列文章

Hadoop完全分布式搭建(腾讯云服务器+阿里云服务器)

Hive系列 (一):Hive搭建

Hive系列 (二):Hive基础知识

Hive系列 (三):Hive开窗函数详解

Hive系列 (四):自定义函数UDF UDTF UDAF

Hive系列 (五):Hive数据类型

Hive系列 (六):Hive数据类型转换

Hive系列 (七):Hive常用函数

Hive系列 (八):Hive中的explode 与 lateral view

Hive系列 (九):Hive数据存储

Hive系列 (十):Hive调优

基本概念

行存储

常见的关系型数据库都是行式存储的, 在我们查询的条件需要得到大多数列的时候, 相对列式格式, 查询效率更高. Hive默认的Text就是行式存储的。

特点:

查询满足条件的一整行数据的时候,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。而列存储则需要去每个聚集的字段找到对应的每个列的值。

列存储

列式存储, 它存储的方式是采用数据按照行分块,每个块按照列存储。

特点:

  1. 对于查询内容之外的列, 不必执行I/O和解压操作
  2. 适合仅访问小部分列的查询. 如果查询的列很多, 则行存储格式更为适合
  3. 列压缩的效率会更高, 尤其是列中取值不多的时候
  4. 数据仓库中经常会有在非常大的数据集上对某些列进行聚合的需求, 列式格式非常符合这种场景的需要

分片

MapReduce在读取数据的时候需要并行, 这就要求压缩后的文件可以分片读取. 分片对于MapReduce任务来说非常重要。

Hive存储格式

hive表常用的存储格式主要包括:orcparquettextfilesqeuencefile几种,存储格式一般会选择综合性能最好的orc或者parquet,这两种都是列式存储格式。

压缩格式一般会选择snappylzogizp,针对不同的应用场景使用不同的压缩方式。

相较于行式存储,列式存储在分析中有以下有点:

  1. 分析场景中往往需要读大量行但是少数几个列。在列存模式下,只需要读取参与计算的列即可,极大的减低了IO开销,加速了查询。
  2. 同一列中的数据属于同一类型,压缩效果显著。
  3. 更高的压缩比意味着更小的数据空间,从磁盘中读取相应数据耗时更短。
  4. 自由的压缩算法选择。不同列的数据具有不同的数据类型,适用的压缩算法也就不尽相同。可以针对不同列类型,选择最合适的压缩算法。

Hive存储格式对比

TextFile

Hive的默认格式,存储方式为行存储

创建表,存储数据格式为TextFile。脚本如下

# 文件名dict_text.sql
create table myhive.dict_text 
   (dict_code string, 
	item_code string, 
	serial string, 
	item_name string, 
	item_desc string, 
	src_sys_code string
   )ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;

# 执行脚本
[hadoop@master sql_script]$ hive -f dict_text.sql 
SLF4J: Class path contains multiple SLF4J bindings.
Hive Session ID = 6495bb2e-4797
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值