(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");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/471116.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解 Redis 实现数据去重

✨✨ 欢迎大家来到喔的嘛呀的博客✨✨ 🎈🎈希望这篇博客对大家能有帮助🎈🎈 目录 言 一. Redis去重原理 1. Redis Set 数据结构 2. 基于 Set 实现数据去重 3. 代码示例 4. 总结 …

【正点原子STM32】TIMER 定时器(软件定时原理、定时器定时原理、分类和特性、基本定时器(影子寄存器和U事件和UI中断))

一、定时器概述 1.1、软件定时原理1.2、定时器定时原理1.3、STM32定时器分类1.4、STM32定时器特性表1.5、STM32基本、通用、高级定时器的功能整体区别 二、基本定时器 2.1、基本定时器简介2.2、基本定时器框图2.3、定时器计数模式及溢出条件2.4、定时器中断实验相关寄存器2.…

C语言第二十五弹---字符函数和字符串函数(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、字符分类函数 2、字符转换函数 3、strlen的使用和模拟实现 4、strcpy 的模拟实现 5、strcat 的模拟实现 6、strcmp 的模拟实现 7、strncpy 函数的使用 总结…

[word] word怎么取消隐藏文字 #职场发展#微信

word怎么取消隐藏文字 Word有很多实用的技巧,学会了可以节省大量的时间在编辑上。今天就给大家分享下word怎么取消隐藏文字这个小技能。 1.选中内容设置 首先先显示段落符号标记(快捷鍵Ctrl Shift8),之后选中文本内容。 2.设置取消隐藏的文字 点击开始…

基于 InternLM 和 LangChain 搭建你的知识库(三)

基于 InternLM 和 LangChain 搭建你的知识库 大模型开发范式 Finetune 在大型语言模型中,Finetune(微调)是一种技术,用于调整预训练的模型以提高其在特定任务或数据集上的表现。这种方法通常涉及以下步骤: 预训练模…

FreeRTOS 延迟中断处理

采用二值信号量同步 二值信号量可以在某个特殊的中断发生时,让任务解除阻塞,相当于让任务与中断 同步。这样就可以让中断事件处理量大的工作在同步任务中完成,中断服务例程(ISR) 中只是快速处理少部份工作。如此,中断处理可以说是…

【自然语言处理】:实验1布置,Word2VecTranE的实现

清华大学驭风计划 因为篇幅原因实验答案分开上传,答案链接http://t.csdnimg.cn/5cyMG 如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~ 实验1: Word2Vec&TranE的…

【动态规划】【C++算法】1563 石子游戏 V

作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 本文涉及知识点 动态规划汇总 LeetCoce:1563 石子游戏 V 几块石子 排成一行 ,每块石子都有一个关联值,关联值为整数,由数组 stoneValue 给出。 游戏中…

java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 宠物在线商城系统是一套完善的java web信息管理系统 servletdaobean mvc模式,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

网络安全威胁,如何解决缓冲区溢出攻击

目录 一、什么是网络安全 二、什么是缓冲区 三、缓冲区溢出 四、缓冲区溢出攻击的类型 一、什么是网络安全 网络安全(Network Security)指的是保护计算机网络及其相关设备、系统和数据免受未经授权访问、破坏、篡改、窃取或滥用的威胁和攻击。随着网…

分布式事务详解

概述 随着互联网的发展,软件系统由原来的单体应用转变为分布式应用。分布式系统把一个单体应用拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作。这种分布式系统下不同服务之间通过远程协作完成的事务称之为分布式事务,例如用户注册送积分事务…

QEMU使用步骤

1、安装虚拟机环境:ubuntu-16.04.7-desktop-amd64.iso,下载地址:Index of /ubuntu-releases/16.04.7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 2、安装gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz到/opt目录&#xf…