hive支持了几种常用的存储格式, 比如textfile, orc, rcfile, parquet等
各自的特性就不说了, 请参考官网或者其他博客.
因一些特殊原因, 创建表时将表格式设置为orc了, 但后续数据源从其他地方导入, 是文本类型(txt/tsv/csv等常见格式), 要回退表的存储类型为text, 怎么办?
三步:
- 修改文件存储类型(set fileformat)
- 修改列分隔符(set serdeproperties)
- 重建对应分区
代码:
alter table tbl set fileformat textfile;
alter table tbl set serdeproperties('serialization.format'='\t', 'field.delim'='\t') ;
alter table tbl drop partition(pt='xxx'); -- 要drop掉
load data local inpath 'xxxx/yyy.tcv' overwrite into table tbl partition(pt='xxx');
如果分区较多, 可以批量删, 然后批量重建分区(msck repair table)即可, 省的一个个来.