Hive的存储格式对比 |
您所在的位置:网站首页 › hive查看所有表存储空间 › Hive的存储格式对比 |
Hive的存储格式对比
发布时间:2020-09-03 18:20:55
来源:网络
阅读:2832
作者:bigdata_lzw
栏目:大数据
在生产中可以通过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_none stored as orc tblproperties ("orc.compress"="NONE") as select * from textfile;orcfile采用zlib压缩: orcfile不采用zlib压缩: 总结:通过对比,采用zlib压缩时,节省的空间更多一点 创建Parquet格式的表 #创建Parquet格式不使用压缩 create table parquetfile stored as parquet as select * from textfile; #创建Parquet格式使用gzip压缩 set parquet.compression=gzip; create table parquetfile_gzip stored as parquet as 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条数据; 免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。 hive 文件格式 上一篇新闻:详细解读Hibernate的缓存机制 下一篇新闻:对numpy中布尔型数组的处理方法详解![]() 红包可用于(云服务器、高防服务器、裸金属服务器、高防IP、云数据库、CDN加速)购买和续费 猜你喜欢 Hbase原理架构与安装部署教程 11、Hive安装详细教程 如何选择动态ip软件 “一键”搞定用户同步,LDAP在永洪BI中的应用 Hbase数据存储原理与读写详解 Zookeeper【从五个方面,渐进】 Linux下安装kafka Redis远程字典服务Key-Value存储系统【缓存】 Nginx反向代理【4个问题,全面理解反向代理负载均衡】 oData(开放数据协议)【可以不应用,但不能不了解】 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |