Hive编程指南10---其他文件格式和压缩方法
来源:互联网 发布:mac 文字整理 编辑:程序博客网 时间:2024/05/16 06:35
Hive其他文件格式和压缩方法
确定安装编译码器
hive -e "set io.compression.codecs"
选择一种压缩编/解码器
使用压缩可以最小化所需要的磁盘存储空间,以及减小磁盘和网络I/O操作,不过,文件压缩和解压过程会增加CPU开销
对于亚索密集型的job最好使用压缩,特别是有额外的CPU资源或者磁盘存储空间比较稀缺的情况
GZIP和BZip2压缩方案,包括加速对这些格式的压缩和解压缩的本地Linux库,Snappy、LZO
BZip2压缩率最高,消耗最多CPU开销;GZip是压缩率和压缩/解压速度上的下一个选择
LZO和Snappy压缩率比BZip2和GZip小,但是压缩/解压速度要快,特别是解压缩过程;相对于磁盘空间和I/O开销,频繁读取数据所需要的解压缩速度更重要的
考虑因素为压缩格式的文件是否是可分割的
开启中间压缩
可以减少job中map和reduce task键的数据传输量,选择一个低CPU开销的编/解码器要比选择一个压缩率高的编/解码器要重要多
<property>
<name>hive.exec.compress.intermediate</name>
<value>true</value>
</property>
Hadoop压缩默认的编/解码器是DefaultCodec,可以修改$HADOOP_HOME/conf/mapred-site.xml
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
最终输出结果压缩
Hive输出内容同样可以压缩,默认为false
<property>
<name>hive.exec.compress.output</name>
<value>false</value>
</property>
对于输出文件,使用GZip进行压缩,可以大幅度降低文件的大小,对于后面的MapReduce job 而言是不可分割的
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.GzipCodec</value>
</property>
sequence file 存储格式
压缩文件可以节约存储空间,缺点是这些文件是不可分割的,只能从头读到尾;可以分割的文件,可以划分成多个部分,由多个mapper并行处理
Hadoop所支持的sequence file 存储格式可以将一个文件划分成多个块,再采用一种可分割的方式对块进行压缩CREATE TABLE a_sequence_file_table STORED AS SEQUENCEFILE;
Sequence file提供3中压缩方式:NONE、RECORD(默认:记录级别)和BLOCK(块级别---压缩性能最好且可以分割)
Hadoop---mapred-site.xml或者Hive---hive-site.xml
<property>
<name>mapred.output.compression.type</name>
<value>BLOCK</value>
</property>
sequence file 存储格式
1.中间数据压缩,不影响最终输出,仍然是非压缩的,可以使用dfs -cat 查看
set hive.exec.compress.intermediate=true;
2.使用其他编/解码器,使用中间数据压缩
set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.GZipCodec;
set hive.exec.compress.intermediate=true;
3.输出结果压缩,输出文件后缀名是.deflate,dfs -cat不能查看(非二进制输出),但是Hive可以正常地查询
set hive.exec.compress.output=true;
4.Haoop的TextInputFormat进行处理,文件后缀名为.deflate或.gz的压缩文件,Hive不关心底层文件是何方式压缩
set hive.exec.compress.output=true;
set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.GZipCodec;
//Hive shell中执行! /bin/zcat 来解压缩,并输出显示
5.可能产生大的压缩文件,而且不可分割,不能并行处理这个数据,使用Sequence file
set mapred.output.compression.type=BLOCK;
set hive.exec.compress.output=true;
set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.GZipCodec;
//dfs -text查看文件
6.同事使用直接数据压缩和最终输出数据压缩,且使用不同压缩编/解码器的Sequence file
set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set hive.exec.compress.intermediate=true;
set mapred.output.compression.type=BLOCK;
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GZipCodec;
存档分区
存储格式名为HAR(Hadoop Archive归档文件)
一个HAR文件类似于HDFS中一个TAR文件,是一个单独文件,其内部存放多个文件和文件夹
可以被Hive查询,减轻NameNode压力;缺点,查询效率不高,HAR文件非压缩,不节约存储空间
ALTER TABLE ... ARCHIVE PARTITION语句将表转换成一个归档表
set hive.archive.enabled=true;
ALTER TABLE <table> ARCHIVE PARTITION(par='');
LATER TABLE <table> UNARCHIVE PARTITION(par='');
压缩:包扎
Hive可以读写不同类型压缩文件,节约磁盘空间以及处理开销,有助于和其他工具进行集成,无需使用Java编写自定义的"适配器"
- Hive编程指南10---其他文件格式和压缩方法
- Hive编程(十一)【其他文件格式和压缩方法】
- hive-文件格式和压缩方法
- 其他文件格式及压缩方法
- Hive编程(三)【数据类型和文件格式】
- 【Hive】Hive编程指南
- hive数据类型和文件格式
- Hive-数据类型和文件格式
- hive数据类型和文件格式
- hive编程指南--hive基础知识
- 读hive编程指南
- Hive编程指南
- Hive编程指南 读书笔记
- <<Hive编程指南>>读书笔记
- Hive编程入门指南
- Hive编程指南pdf
- hive学习之四:hive文件格式以及压缩编码
- Hive中的数据类型和文件格式
- js提取数字和字母 ,数字自增,PM0001---->PM0002 / PM009--> PM010
- 文章标题
- Linux 内核设备驱动之GPIO驱动之GPIO 控制器描述
- PHP数组实现栈和队列:push,pop,shif,unshift
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- Hive编程指南10---其他文件格式和压缩方法
- Linux命令--cd
- The request sent by the client was syntactically incorrect-SpringMVC问题详解
- spring容器和spring mvc容器有什么关系?
- 通过泛型实现封装,减少重复代码
- Android View Activity内部顶部通知实现方式收录
- java实现rabbitmq消息的发送接受
- iOS回顾笔记(04) -- UIScrollView的基本使用详解
- 详细解读神经网络十大误解,再也不会弄错它的工作原理