Hive常见的存储文件格式

本文介绍了Hive中常见的文件格式,包括SEQUENCEFILE、TEXTFILE、RCFILE、ORC和PARQUET,强调了列式存储在查询效率上的优势。ORC和PARQUET在生产环境中被广泛使用,因能显著减少磁盘空间并提高查询速度。ROW格式适合全字段查询,而列式存储如ORC和PARQUET在查询部分字段时更为高效,但全字段查询时可能较慢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载
https://blog.youkuaiyun.com/qq_32641659/article/details/89339143

1、Hive常见的文件格式

  • SEQUENCEFILE:生产中绝对不会用,k-v格式,比源文本格式占用磁盘更多
  • TEXTFILE:生产中用的多,行式存储
  • RCFILE:生产中用的少,行列混合存储,ORC是他得升级版
  • ORC:生产中最常用,列式存储
  • PARQUET:生产中最常用,列式存储
  • AVRO:生产中几乎不用,不用考虑
  • JSONFILE:生产中几乎不用,不用考虑
  • INPUTFORMAT:生产中几乎不用,不用考虑

hive默认的文件格式是TextFile,可通过set hive.default.fileformat 进行配置

行式存储和列式存储
在这里插入图片描述
列式存储:
优点:当查询部分字段时,极大减小列查询数据的范围,显著提高查询效率
缺点:当查询全部字段时,数据需要重组,比直接读取一行慢

行式存储:
优点:全字段查询速度快
缺点:当查询部分字段时,底层依旧读取所有字段数据,造成资源浪费。生产中很少遇到全字段查询

2、hive文件格式配置实现以及对比

#先关闭压缩
SET hive.exec.compress.output=false;

使用SEQUENCEFILE文件格式
SEQUENCEFILE格式数据反而变大了,生产肯定不可取的

#创建SEQUENCEFILE数据存储格式表
create table page_views_seq
stored as SEQUENCEFILE
as select * from page_views;

#查看hdfs数据
[hadoop@hadoop001 ~]$ hdfs dfs -du -s -h /user/hive/warehouse/wsktest.db/page_views_seq/*
19.6 M  19.6 M  /user/hive/warehouse/wsktest.db/page_views_seq/000000_0

使用RCFILE格式
相较于普通文件,无读写以及存储优势,rc格式数据只节约了10%左右的空间存储,生产测试中读写性能也没有多大的提升

#创建RCFILE数据存储格式表
create table page_views_rc
stored as RCFILE
as select * from page_views;

#查看hdfs数据
[hadoop@hadoop001 ~]$ hdfs dfs -du -s -h /user/hive/warehouse/wsktest.db/page_views_rc/*
17.9 M  17.9 M  /user/hive/warehouse/wsktest.db/page_views_rc/000000_0

使用ORC文件格式
orc格式文件大小是原文本1/3左右,默认使用压缩则只有原文本的1/6左右

#创建ORC文件格式表,默认是使用zlib压缩,支持zlib和snappy
create table page_views_orc
stored as ORC
as select * from page_views;
#查看hdfs数据
[hadoop@hadoop001 ~]$ hdfs dfs -du -s -h /user/hive/warehouse/wsktest.db/page_views_orc/*
2.8 M  2.8 M  /user/hive/warehouse/wsktest.db/page_views_orc/000000_0

#创建ORC文件格式表,不使用压缩
create table page_views_orc_none
stored as ORC tblproperties ("orc.compress"="NONE")
as select * from page_views;
#查看hdfs数据
[hadoop@hadoop001 ~]$ hdfs dfs -du -s -h /user/hive/warehouse/wsktest.db/page_views_orc_none/*
7.7 M  7.7 M  /user/hive/warehouse/wsktest.db/page_views_orc_none/000000_0

使用PARQUET文件格式
parquet格式文件大小是源文件的1/5左右。生产上也是好的选择

#创建PARQUET文件格式表
set parquet.compression=gzip; #设置parquet文件的压缩格式,我这里设不设置,文件大小都一致
create table page_views_par
stored as PARQUET
as select * from page_views;

#查看hdfs数据
[hadoop@hadoop001 ~]$ hdfs dfs -du -s -h /user/hive/warehouse/wsktest.db/page_views_par/*
3.9 M  3.9 M  /user/hive/warehouse/wsktest.db/page_views_par/000000_0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值