set hive.exec.compress.intermediate=false; set mapred.output.compress=false; create table a as select * from dimdate; Table default.a stats: [numFiles=1, numRows=1188, totalSize=90068, rawDataSize=88880] Job 0: Map: 1 Cumulative CPU: 1.88 sec HDFS Read: 6083 HDFS Write: 90138 SUCCESS
通过 hdfs dfs -cat /filepath 查看a 是否被压缩
可以看出没压缩的时候 a表有 1个文件 1188行 9k的大小 裸数据大小8k
再看压缩的
set hive.exec.compress.intermediate=true; set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set hive.exec.compress.output=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; create table a_gz as select * from dimdate; Table default.a_gz stats: [numFiles=1, numRows=1188, totalSize=11316, rawDataSize=88880] MapReduce Jobs Launched: Job 0: Map: 1 Cumulative CPU: 1.31 sec HDFS Read: 6083 HDFS Write: 11389 SUCCESS
压缩后 大小变成了1k,而去 write的数据也从9k变成了1k
因为是压缩文件 就不能用 dfs -cat 了
所以要用 zact +filepath
压不压还是区别蛮大的.但是对于自带压缩的文件格式,比如orc
hive.exec.compress.output 是true或者是false 都是一样的 因为orc 默认是zilb压缩