`
gaozzsoft
  • 浏览: 424677 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Hive的存储格式对比总结

    博客分类:
  • 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

image.png

从上面的表中创建一个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

image.png

创建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表在创建时,增加了很多额外信息,在生产中不使用此种类型的文件格式;

image.png

创建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压缩:

image.png

 

orcfile不采用zlib压缩:

image.png

总结:通过对比,采用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压缩:可以看到几乎没有压缩多少空间

image.png

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

image.png

    

查询性能对比:

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

查询条数:

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

    rcfile:查询1973371条数据;

    orcfile:查询2883851条数据;

    parquetfile:查询了8622602条数据;

 

转自:https://blog.51cto.com/14284607/2381714?source=dra

 

 

 

 

 

分享到:
评论

相关推荐

    hive-testbench-hive14.zip大数据TPCDS-99SQL自动测试脚本

    在大数据处理领域,Hive作为一个分布式数据仓库系统,被广泛应用于海量数据的存储和分析。而TPCDS(Transaction Processing Performance Council Decision Support)是业界公认的大数据基准测试套件,用于评估数据...

    TPCDS测试-99条Hive基准测试流程

    Hive作为Hadoop上的数据仓库工具,允许用户使用SQL语法(HQL)对存储在HDFS上的结构化数据进行查询和分析。Hive的优势在于其可扩展性、容错性和对分布式计算的支持,适合处理PB级别的大数据。 **三、TPCDS测试流程*...

    java大数据内容_6Hive、Kettle

    **Hive与传统数据库的对比** Hive虽然提供了类似SQL的查询语言,但在数据更新、索引支持和执行延迟等方面与传统的关系型数据库有所区别。Hive适用于离线分析(OLAP)场景,不适合在线事务处理(OLTP)。此外,Hive在...

    8、NIFI综合应用场景-NiFi监控MySQL binlog进行实时同步到hive

    3. **数据一致性验证**:对比MySQL与Hive中的数据,确认同步无误。可以通过定期的全量比对或特定样本的抽查来完成。 4. **性能调优**:根据实际性能监控结果,调整处理器的并发度、线程数、队列大小等参数,优化...

    hive rc文件的有关文档

    #### 三、RCFile与传统数据存储格式对比 RCFile相较于传统的行存储(row-store)、列存储(column-store)和混合存储(hybrid-store)格式,在大规模数据处理方面展现出明显的优势: - **行存储**通常适用于事务处理场景...

    Hadoop databases: Hive, Impala, Spark, Presto For ORACLE DBAs

    本文将探讨 Hadoop 生态系统中的四种主要工具——Hive、Impala、Spark 和 Presto,并对比它们与 Oracle 数据库的特点与应用场景,旨在帮助 Oracle DBA 们更好地理解和掌握这些新兴技术。 #### 二、Hadoop 概览 ...

    Impala与Hive的比较

    从客户端角度来看,Impala和Hive有着诸多共通之处,比如支持相同的元数据管理、ODBC/JDBC驱动、SQL语法、文件格式以及存储资源池等特性。 ##### 2.2 使用场景示例 在实际应用中,可以先利用Hive对原始数据进行清洗...

    Cloudera大数据分析培训内容介绍.pdf

    此外,还会深入探讨处理复杂数据的方法,如存储格式、嵌套数据类型、群组处理和使用自定义函数(UDFs)来扩展Pig的功能。 **Apache Hive**:Hive是一个基于Hadoop的数据仓库工具,提供了SQL-like查询语言HiveQL,...

    hmyjsmst.docx

    - Hive和RDBMS的对比; - Hive中的分区与桶的区别; - Hive中的ACID特性; - 如何优化Hive查询性能等。 **2.9 Hadoop HA** - **知识点** - Hadoop HA(High Availability)是指在Hadoop集群中实现高可用性的...

    《大数据降本提效实战手册》

    - **存储格式**:选择合适的存储格式如Parquet、ORC等可以显著减少I/O操作时间。 - **数据倾斜**:通过合理设计数据分布避免数据倾斜现象,确保计算节点间的负载均衡。 - **参数配置**:正确配置Spark的相关参数...

    数据测试 报表类型数据项目测试分享 共20页.pdf

    建立这样的库来存储预期结果,对比线上数据,确保数据指标的一致性,例如,跳失率、PV/IP比、店铺流量等。 总结来说,数据测试在报表类型数据项目中需考虑分布式计算、快速开发、多格式数据处理、数据源不可控等...

    Hadoop开发者第四期

    - **目的**: 将Hive的元数据存储从默认的MySQL切换到PostgreSQL,以提升元数据管理的能力。 - **配置步骤**: - PostgreSQL的安装与配置。 - 创建Hive元数据所需数据库和用户。 - 修改Hive配置文件以指定...

    1901-1930.zip

    长期的天气数据可以帮助研究人员发现更精确的气候变化趋势,并与现代数据进行对比,以评估气候变化的速度和影响。 在【压缩包子文件的文件名称列表】中只列出了一项:“1901-1930”,这可能意味着压缩文件包含了一...

    大数据 大数据技能大赛 离线数据处理

    通过编写Scala代码利用Spark工具,可以高效地完成数据的全量抽取与清洗工作,并将处理后的数据存储到Hive的DWD库中。此外,对于表中涉及的时间戳字段,还需要进行格式化处理以满足特定的需求。整个过程不仅考察了...

    电商网站的大数据分析统计平台数据集

    在实际操作中,所有这些分析都离不开强大的**大数据处理工具**,如Hadoop、Spark用于分布式计算,MySQL、Hive等存储大量数据,Python或R语言进行编程分析,Tableau、Power BI等用于数据可视化。 总结来说,电商网站...

Global site tag (gtag.js) - Google Analytics