(10)Hive的相关概念——文件格式和数据压缩

2024-02-15 21:52

本文主要是介绍(10)Hive的相关概念——文件格式和数据压缩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、文件格式

1.1 列式存储和行式存储

1.1.1 行存储的特点

1.1.2 列存储的特点

1.2 TextFile

1.3 SequenceFile

1.4  Parquet

1.5 ORC

二、数据压缩 

2.1 数据压缩-概述

 2.1.1 压缩的优点

 2.1.2 压缩的缺点

2.2 Hive中压缩配置

2.2.1 开启Map输出阶段压缩(MR 引擎)

2.2.2 开启Reduce输出阶段压缩

2.3 Hive中压缩测试

一、文件格式

     Hive数据存储的本质还是HDFS,所有的数据读写都基于HDFS的文件来实现。为了提高对HDFS文件读写的性能,Hive提供了多种文件存储格式:TextFile、SequenceFile、ORC、Parquet等。不同的文件存储格式具有不同的存储特点,有的可以降低存储空间(列式存储),有的可以提高查询性能(行式存储)。Hive的文件格式在建表时指定,默认是TextFile

1.1 列式存储和行式存储

1.1.1 行存储的特点

    查询满足条件的一整行数据的时候,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。

1.1.2 列存储的特点

    每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。TextFileSequenceFile的存储格式都是基于行存储的,ORC和Parquet是基于列式存储的。

1.2 TextFile

     TextFile是Hive中默认的文件格式,也是最常见的数据文件格式,存储形式为按行存储。Hive设计时考虑到为了避免各种编码及数据错乱的问题,选用了TextFile作为默认的格式。建表时不指定存储格式即为TextFile,导入数据时把数据文件拷贝至HDFS不进行处理。

1.3 SequenceFile

    SequenceFile是Hadoop里用来存储序列化的键值对,即二进制的一种文件格式。SequenceFile文件也可以作为MapReduce作业的输入和输出,hive也支持这种格式。

--sequencefile表
create table tb_sogou_seq(stime string,userid string,keyword string,clickorder string,url string
)
row format delimited fields terminated by '\t'
stored as sequencefile;insert into table tb_sogou_seq
select * from tb_sogou_source;  -- tb_sogou_source表 是txt文件格式

   下图是插入原始txt文件(tb_sogou_source)大概有1.07G1260万条数据存储成SequenceFile的文件大小。 

1.4  Parquet

       Parquet是一种支持嵌套结构的列式存储文件格式。作为大数据系统中OLAP查询的优化方案,它已经被多种查询引擎原生支持,并且部分高性能引擎将其作为默认的文件存储格式。

--Parquet格式
create table tb_sogou_parquet(stime string,userid string,keyword string,clickorder string,url string
)
row format delimited fields terminated by '\t'
stored as parquet;insert into table tb_sogou_parquet
select * from tb_sogou_source; -- tb_sogou_source表 是txt文件格式

 下面图示是插入原始txt文件(tb_sogou_source)大概有1.07G1260万条数据存储成Parquet的文件大小。

1.5 ORC

    ORC(OptimizedRC File)文件格式也是一种Hadoop生态圈中的列式存储格式;它最初产生自Apache Hive,用于降低Hadoop数据存储空间和加速Hive查询速度。

--ORC格式
create table tb_sogou_orc(stime string,userid string,keyword string,clickorder string,url string
)
row format delimited fields terminated by '\t'
stored as orc;insert into table tb_sogou_orc
select * from tb_sogou_source;

 下面图示是插入原始txt文件(tb_sogou_source)大概有1.07G1260万条数据存储成ORC的文件大小。

二、数据压缩 

2.1 数据压缩-概述

     Hive压缩实际上说的就是MapReduce的压缩。Hive底层运行MapReduce程序时,磁盘I/O操作、网络数据传输、shuffle(清洗)和merge(合并)要花大量的时间,尤其是数据规模很大和工作负载密集的情况下。鉴于磁盘I/O和网络带宽是Hadoop的宝贵资源,数据压缩对于节省资源、最小化磁盘I/O和网络传输非常有帮助。MR 支持的压缩算法如下

 2.1.1 压缩的优点

  • 减小文件存储所占空间
  • 加快文件传输效率,从而提高系统的处理速度
  • 降低IO读写的次数

 2.1.2 压缩的缺点

  • 使用数据时需要先对文件解压,加重CPU负荷,压缩算法越复杂,解压时间越长
  • Hive中的压缩就是使用了Hadoop中的压缩实现的,所以Hadoop中支持的压缩在Hive中都可以直接使用。

2.2 Hive中压缩配置

2.2.1 开启Map输出阶段压缩(MR 引擎)

    开启map输出阶段的压缩可以减少mapReduce task间数据传输量。具体参数有:

--开启hive中间传输数据压缩功能
set hive.exec.compress.intermediate=true;
--开启mapreduce中map输出端的压缩功能
set mapreduce.map.output.compress=true;
--设置mapreduce中map输出端的数据的压缩方式
set mapreduce.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;

2.2.2 开启Reduce输出阶段压缩

    当 Hive将执行结果写入到表中时,输出内容同样可以进行压缩。其余参数如下:

#当Hive将输出内容写入到表中时,输出内容同样可以进行压缩。属性hive.exec.compress.output控制着这个功能
--开启hive执行结果的输出压缩功能
set hive.exec.compress.output=true;---开启mapreduce最终输出数据压缩
set mapreduce.output.fileoutputformat.compress=true;---设置mapreduce最终数据输出压缩方式
set mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;---设置mapreduce最终数据输出压缩为块压缩
set mapreduce.output.fileoutputformat.compress.type=BLOCK;

2.3 Hive中压缩测试

  • textfile格式snappy压缩
--创建表,指定为textfile格式,并使用snappy压缩
create table log_orc_snappy(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as textfile 
tblproperties("orc.compress"="SNAPPY");
  • orc格式snappy压缩
--创建表,指定为orc格式,并使用snappy压缩
create table log_orc_snappy(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as orc
tblproperties("orc.compress"="SNAPPY");
  • orc格式不使用压缩
--创建表,指定为orc格式,并使用snappy压缩
create table log_orc_snappy(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as orc
tblproperties("orc.compress"="NONE");

这篇关于(10)Hive的相关概念——文件格式和数据压缩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712635

相关文章

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方