hive切换表底层文件类型以及分隔符
1、改底层文件存储类型,但是一般只会在数据文件与期望类型一致的时候使用,比如load等方式时发现建表时没指定对这样的,因为这个语句不会更改具体的底层文件内容,只改元数据
ALTER TABLE 表名 SET FILEFORMAT 希望类型;
2、更改数据的分割符号,但是通常情况下有的表是不支持改动的,比如orc格式的表,除非你用的第三方软件,比如kyuubi,它在跑数据的时候就会想orc文件里面写分割符,奇奇怪怪的
alter table 表名 set serdeproperties('serialization.format'='\t', 'field.delim'='\t');
改完之后查一下结果没问题就行
DESCRIBE FORMATTED tablename;
如果系列化类库没变过来的话用下面的语句改一下,比如text改orc
ALTER TABLE dev.dev_yhzz_pop_bill SET FILEFORMAT INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde';
或者orc改text
ALTER TABLE dev.dev_yhzz_pop_bill SET FILEFORMAT INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe';