综合考虑到压缩比、sql查询速率;
Hive的几种常见压缩格式(ORC,Parquet,Sequencefile,RCfile,Avro)的读写查询性能测试
生产环境中hive一般用orc,spark一般用parquet,snappy配合parquet性能最高。
压缩格式上:
对于量大但是不怎么计算的数据,一般用gzip(压缩比最高,压缩解压缩速度最慢)
对于量小但是经常需要计算的数据,一般用lzo或者snappy
stored as parquet
tblproperties ("parquet.compression"="snappy");
1. hive表常用存储格式
对比较冷的数据不需要怎么运算的可以用高压缩比的gzip格式
都是列式存储格式:orc和parquet
ps:orc格式的表不能通过load data导入数据,需要先通过load data inpath "path" into table textfile_table;
然后通过insert into table orc_table select * from textfile_table; 来导入数据
row format delimited fields terminated by '\t'
stored as orc;
2. hive表常用压缩格式
snappy和lzo
row format delimited fields terminated by '\t'
stored as orc tblproperties("orc.compress"="SNAPPY");
ps:hive表HDFS数据灌入Druid的实践用法
由于数据进入Druid的时候,gz压缩效果最好,压缩数据可优化摄入job的map阶段读取速度,gz格式比lzo节省map阶段30%运行时间。
所以处理hive表的时候可以开启压缩:
1、为map中间输出启用压缩。
一般对于中间输出压缩采用低压缩比,高压缩解压缩速度的压缩算法,如LZO,Snappy
set hive.exec.compress.intermediate=true;
set mapred.map.output.compression.codec=com.hadoop.compression.lzo.LzoCodec;
2、为最终输出结果启用压缩
需要注意的是:有些压缩格式如gz是不支持切分的,这样后续mapre-reduce任务将不能并行处理。
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;