hive存储格式textfile到orc

hive默认存储格式为textfile,orc是一种列式存储格式,读,写,处理数据上比textfile更有优势,更节省磁盘空间

由于orc的表不能直接load导入,所以我们仍需要textfile的表

将textfile表的查询结果导入到orc表

create table api_orc 
stored as ORC 
TBLPROPERTIES("orc.compress"="ZLIB") 
as select * from api;

如果我们将textfile表的全部字段导入orc表,无需指定字段

导入到orc表之后,就可以把textfile的数据删掉了,每天把前一天的先进textfile,再进orc,

insert into table api_orc
select * from api where to_date(date)='前一天'

最后删掉textfile的,节省磁盘空间

这是测试的效果,原先的textfile数据为310M,改成orc格式后为22M

友情提示: ZLIB务必大写,不然建表不报错,insert数据报错,没有log才是最蛋疼的

如果只需要textfile表的部分字段,可以在建orc表的时候指定字段

create table api_orc1(
date string,
status int) 
stored as ORC 
TBLPROPERTIES("orc.compress"="ZLIB");

然后再insert

insert into 
table api_orc1 
select date,status 
from api;

这样就ok了。

你可能感兴趣的:(hive)