千家信息网

Hive的存储格式对比

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,在生产中可以通过Hive表的文件格式及查询速度的对比来确定使用哪种文件格式,以节省空间和提高查询速度;官方参考文档:https://cwiki.apache.org/confluence/displa
千家信息网最后更新 2025年02月04日Hive的存储格式对比

在生产中可以通过Hive表的文件格式及查询速度的对比来确定使用哪种文件格式,以节省空间和提高查询速度;

官方参考文档:https://cwiki.apache.org/confluence/display/HIVE


结论:

压缩效果:

最好的是:bzip2;bzip2压缩比很高,但是占用时间较久

其次:orc和parquet的压缩几乎一致;生产建议选择orc或者parquet;

查询性能:由于数据量太小,得出的结果不准确;大佬的生产经验是parquet的查询性能要优于orc;

Hive支持的存储格式有:

Text File

SequenceFile

RCFile

Avro Files

ORC Files

Parquet

注:Hive默认的格式为Text File,可以通过set hive.default.fileformat查看

> set hive.default.fileformat;hive.default.fileformat=TextFile

以下将对每种文件格式进行对比:

创建TextFile表

#原始数据格式为TextFile,大小为65M[hadoop@hadoop001 ~]$ hadoop fs -du -s -h /input/*64.9 M  194.7 M  /input/part-r-00000#创建表并加载TextFile数据CREATE EXTERNAL TABLE textfile (cdn string, region string, level string, time string, ip string, domain string, url string, traffic bigint)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; load data local inpath '/home/hadoop/part-r-00000' overwrite into table textfile;

可以看到此数据大小的64.9M

从上面的表中创建一个bzip2压缩的表:

hive支持在创建表的时候对数据进行压缩,配置如下:

设置开启压缩:set hive.exec.compress.output=true;

查看压缩的格式:set mapreduce.output.fileoutputformat.compress.codec;

配置压缩的格式:set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Codec

#创建一个bzip2压缩的表create table textfile_bzip2 as select * from textfile;


可以看到启动压缩以后,大小只有13.84M,格式为bz2

创建SequenceFile表

#创建SequenceFile表CREATE EXTERNAL TABLE seqfile (cdn string, region string, level string, time string, ip string, domain string, url string, traffic bigint)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'stored as sequencefile;#加载数据insert into table seqfile select * from textfile;注:默认用load加载数据时,由于源文件是textfile,而表格式为sequencefile,所以无法直接加载,要借用一个临时表使用insert into进行加载

可以看到sequencefile格式的表数据比原始文件还要,这是因为sequencefile表在创建时,增加了很多额外信息,在生产中不使用此种类型的文件格式;

创建RCFile表

#创建RCFile表CREATE EXTERNAL TABLE rcfile (cdn string, region string, level string, time string, ip string, domain string, url string, traffic bigint)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'stored as rcfile;#加载数据insert into table rcfile select * from textfile;

rcfile的作用仅仅是将存储空间节省了10%左右,在生产中不使用此种文件格式;


创建ORC Files:orc是基于rc,是优化过后的列式存储

关于orc的官方介绍:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC

#创建orc格式的表;默认orcfile是采用zlib格式进行压缩CREATE EXTERNAL TABLE orcfile (cdn string, region string, level string, time string, ip string, domain string, url string, traffic bigint)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'stored as orcfile;#加载数据insert into table orcfile select * from textfile;#创建orc格式的表,指定不采用zlib压缩;通过"orc.compress"="NONE"指定create table orcfile_nonestored as orc tblproperties ("orc.compress"="NONE") as select * from textfile;

orcfile采用zlib压缩:


orcfile不采用zlib压缩:

总结:通过对比,采用zlib压缩时,节省的空间更多一点


创建Parquet格式的表

#创建Parquet格式不使用压缩create table parquetfilestored as parquetas select * from textfile;#创建Parquet格式使用gzip压缩set parquet.compression=gzip;create table parquetfile_gzipstored as parquetas select * from textfile;注:通过对比,Parquet格式使用gzip压缩时,可以节省大量的空间

parquet不经过gzip压缩:可以看到几乎没有压缩多少空间

parquet经过gzip压缩:可以看到压缩后的数据很代;


查询性能对比:

查询语句:select count(*) from textfile|rcfile|orcfile|parquetfile where ip='210.35.230.31';

查询条数:

textfile:查询了全表的所有数据,查询68085397条数据;

rcfile:查询1973371条数据;

orcfile:查询2883851条数据;

parquetfile:查询了8622602条数据;

格式 数据 查询 文件 空间 存储 产中 大小 性能 原始 可以通过 官方 速度 支持 生产 配置 一致 作用 信息 只有 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 bae服务器 数据库12张表 黄浦区品牌软件开发创新服务 做软件开发需要学哪些技术 石油十四五规划网络安全 软件开发应用工程师证报名 平度电商软件开发企业 深圳国工网络技术有限公司 微观数据库怎么用 裕华区品牌软件开发价格走势 网络安全专业知识考试题 图像软件开发专家 我最感兴趣的网络安全专业 怎么修改asp数据库 浪潮服务器安装系统重装蓝屏 网络安全是国家最高职称吗 戴尔服务器如何看配置信息 关于计算机网络安全法律法规条例 mysql 数据库表格移植 安装云服务器 天津app软件开发公司多吗 网络安全基本原则领土原则 网络安全手抄报图片简单无字 派出所网络安全保密简报 长亭科技互联网 网络安全知识进校园连接 银川网络安全等级测评的公司 安庆电商软件开发定制 郴州市电脑软件开发待遇 数据库技术大二下学期电子版课本
0