博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive 数据压缩
阅读量:5987 次
发布时间:2019-06-20

本文共 1860 字,大约阅读时间需要 6 分钟。

hot3.png

关于Hadoop HDFS文件的压缩格式选择, 我们通过多个真实的Track数据做测试,得出结论如下:

  1. 1.  系统的默认压缩编码方式 DefaultCodec 无论在压缩性能上还是压缩比上,都优于GZIP 压缩编码。这一点与网上的一些观点不大一致,网上不少人认为GZIP的压缩比要高一些,估计和Cloudera的封装及我们Track的数据类型有关。

  2. 2.  Hive文件的RCFile 的在压缩比, 压缩效率,及查询效率上都优于SEQENCE FILE (包括RECORD, BLOCK 级别)

  3. 3.  所有压缩文件均可以正常解压为TEXT 文件,但比原始文件略大,可能是行列重组造成的。

 

关于压缩文件对于其他组件是适用性如下:

1.  Pig 不支持任何形式的压缩文件。

2.  Impala 目前支持SequenceFile的压缩格式,但还不支持RCFile的压缩格式。

Impala mapreduce的升级版

综上所述

从压缩及查询的空间和时间性能上来说,DefaultCodeC + RCFile的压缩方式均为最优, 但使用该方式,会使得Pig 和Impala 无法使用(Impala的不兼容不确定是否是暂时的)。

而DefaultCodeC + SequenceFile 在压缩比,查询性能上略差于RCFile (压缩比约 6:5), 但可以支持 Impala实时查询。

推荐方案

 采用RCFile 方式压缩历史数据。FackBook全部hive表都用RCFile存数据。

局部压缩方法

只需要两步:

  1. 创建表时指定压缩方式,默认不压缩,以下为示例:

create external table track_hist(

id bigint, url string, referer string, keyword string, type int, gu_id string,

…/*此处省略中间部分字段*/ …, string,ext_field10 string)

partitioned by (ds string) stored as RCFile location '/data/share/track_histk' ;

  1. 2.  插入数据是设定立即压缩

SET hive.exec.compress.output=true;

insert overwrite table track_hist partition(ds='2013-01-01')

select id,url, …/*此处省略中间部分字段*/ …, ext_field10 from trackinfo

where ds='2013-01-01';

全局方式,修改属性文件

 

hive-site.xml中设置:

<property>

  <name>hive.default.fileformat</name>

  <value>RCFile</value>

  <description>Default file format for CREATE TABLE statement. Options are TextFile and SequenceFile. Users can explicitly say CREAT

E TABLE ... STORED AS &lt;TEXTFILE|SEQUENCEFILE&gt; to override</description>

</property>

<property>

  <name>hive.exec.compress.output</name>

  <value>true</value>

  <description> This controls whether the final outputs of a query (to a local/hdfs file or a hive table) is compressed. The compres

sion codec and other options are determined from hadoop config variables mapred.output.compress* </description>

</property>

注意事项

1、Map阶段输出不进行压缩,压缩在reduce端

2、对输出文本进行处理时不压缩

转载于:https://my.oschina.net/loveryuan/blog/491573

你可能感兴趣的文章
Configuring log4net with VS2010 and .Net 4.0
查看>>
html is for what
查看>>
JavaScript 获得鼠标坐标
查看>>
目录文件Oracle11g彻底删除
查看>>
删除androidAndroid递归方式删除某文件夹下的所有文件
查看>>
CSS overflow 属性
查看>>
第10次实验任务
查看>>
java中的设计模式一 装饰模式
查看>>
作用域及可见性
查看>>
PL/pgSQL学习笔记之五
查看>>
Android 经验: 5555 端口会被 adb 误认为 emulator
查看>>
Android手机便携式wifi的使用及无线数据传输(主要针对XP系统)
查看>>
MFC控件(8):command button与syslink control
查看>>
Java生成唯一GUID
查看>>
str_replace使用
查看>>
[Head First设计模式]一个人的平安夜——单例模式
查看>>
Asp.Net Web API 2第四课——HttpClient消息处理器
查看>>
创建Android环境并且安装cordova
查看>>
图例解析四大UML关系【转】
查看>>
微信公共服务平台开发(.Net 的实现)4-------语音识别
查看>>