hive存储格式
作者:互联网
格式类型
Hive支持的存储数据的格式主要有:TEXTFILE 文本格式文件(行式存储)、 SEQUENCEFILE 二进制序列化文件(行式存储)、ORC(列式存储)、PARQUET(列式存储)等。
hive的存储格式通常是:textfile 、 sequencefile 、 rcfile 、 orc 、自定义 set hive.default.fileformat=TextFile; 默认存储格式为:textfile textFile:普通文本存储,不进行压缩。查询效率较低。
- 大多数的Hadoop和hive存储是行式储存
- 行存储的缺点也是显而易见的,它不能支持快速查询处理,
因为当查询仅仅针对多列表中的少数几列时,它不能跳过不必要的列读取;此外由于混合着不同数据值的列,
行存储不易获得极高的压缩比,即空间利用率不易大幅提高。尽管通过熵编码和利用列相关性能够获得一个较好的压缩比,
但是复杂数据存储实现会导致解压开销增大。
各个格式类型的特点
- Hive 中的常用文件存储格式 Parquet
是一个面向列的二进制文件格式,所以是不可以直接读取的,文件中包括该文件的数据和元数据,因此Parquet格式文件是自解析的。Parquet对于大型查询的类型是高效的。对于扫描特定表格中的特定列的查询,Parquet特别有用。Parquet一般使用Snappy、Gzip压缩,默认是Snappy。
建表语句是:sorted as Parquet
- textfile
建表语句是:stored as textfile
textfile,即是文本格式,默认格式,数据不做压缩,磁盘开销大,数据解析开销大
- ORCFILE**
建表语句是:sorted as orc
存储方式:数据按行分块,每块按照列存储。
压缩快,快速列存取。效率比rcfile高,是rcfile的改良版本。
- rcfile
建表语句是:sorted as rcfile
是一种行列存储相结合的存储方式,先将数据按行分块再按列式存储,保证同一条记录在一个块上,避免读取多个块,
有利于数据压缩和快速进行列存储。
总结
-
textfile 存储空间消耗比较大,并且压缩的text 无法分割和合并 查询的效率最低,可以直接存储,加载数据的速度最高
-
sequencefile 存储空间消耗最大,压缩的文件可以分割和合并 查询效率高,需要通过text文件转化来加载
建表语句是:sorted as sequencefile
-
orcfile, rcfile存储空间最小,查询的效率最高 ,需要通过text文件转化来加载,加载的速度最低.
-
orcfile, rcfile较有优势,orcfile,rcfile具备相当于行存储的数据加载和负载适应能力,扫描表时避免不必要的列读取,
拥有比其他结构更好的性能,而使用列维度的压缩,能有效提升存储空间利用率。
但orcfile, rcfile数据加载是性能损失较大,但由于hdfs一次写入多次读写,所以损失可以接受。 -
SequenceFile,ORCFile(ORC),rcfile格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中,
然后再从textfile表中导入到SequenceFile,ORCFile(ORC),rcfile表中。
原文章地址:https://www.gxlcms.com/mysql-307720.html
https://www.modb.pro/db/174806
标签:存储,hive,Parquet,格式,textfile,数据,rcfile 来源: https://www.cnblogs.com/1241187306qq/p/16353130.html