问题涉及到hive的四种存储格式textfile/orc/rcfile/parquet
1.首先,我在创建hive表的时候,对于orc和parquet格式我可以分别使用tblproperties("orc.compress"="SNAPPY")和tblproperties("parquet.compression"="gzip")这类语句进行建表,例如:
create table apl(id1 string, id2 string) row format delimited fields terminated by ',' STORED AS PARQUET tblproperties ("parquet.compression"="lzo");
这样子,我每次往hive表里插入数据后orc和parquet表对数据会自动压缩,这是我想要的。
2.而对于textfile和rcfile存储格式的hive表,我没有找到类似的语句可以做到这样子。我最开始是使用以下语句来设置这两种的压缩格式的,类似于:
SET hive.exec.compress.output=true;
SET mapred.output.compress=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
但是后来我发现这种形式来设置的话是只对当前session生效的,我一关闭shell重新打开,如果没有重新set这些值,那再插入数据就等于是没有压缩的,当然,我也不可能全局改文件设置这个压缩格式。
3.所以,我现在想请教的就是对于textfile和rcfile这两种格式,有没有一种方法可以固定表的压缩格式,使得我不需要每次都去set呢?