Hive 表有多种存储格式,TextFile、ORC、RCFile等等。
TextFile 的存储格式是未经压缩的纯文本格式,按指定分隔符对字段进行划分。当数据本身包含了分隔符,就会导致数据错位问题,所以使用TextFile存储数据有较大的安全隐患
如果表本身的存储格式已经是TextFile,想要转换成其他格式该如何操作?
本教程适合于Hive分区表,如果Hive表不是分区表,直接修改存储格式会导致数据读取失败!
一、查看表格式
通过建表语句,查看表本身的存储格式
命令如下:
SHOW CREATE TABLE <表名>
执行命令后会得到以下结果:
-- 返回结果有裁剪
CREATE EXTERNAL TABLE `xxx`(
`name` bigint COMMENT '名字')
PARTITIONED BY (
`xxx` xxx)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
INPUTFORMAT、OUTPUTFORMAT 决定了表数据的读写方式,也直接决定了表的存储格式