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了。