hive drop和恢复partition external table


在hdfs目录:/user/xx/table/test_external 保存 test_external 表数据

先建表,使用列式存储格式

CREATE external TABLE `test_external` (`schedule_no` STRING, `shop_code` STRING, `goods_code` STRING `created` STRING)
PARTITIONED BY (day_mart string)
ROW FORMAT SERDE   'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION  '/user/xx/table/test_external'

插入数据后,drop 表

drop table test_external

此时观察hive下的文件,/user/xx/table/test_external存在,且有对应分区文件夹
因此drop外部表时数据确实还在,单表已经不存在了

重新create table

再次执行建表语句
成功后,使用show partitions test_external 发现没有分区信息返回,从此处可以了解到,重新create 带分区的table后,分区文件不是自动应用到表上的,原因是表的metadata没有更新

执行修复语句

msck repair table test_external;

再次执行show partitions test_external;
数据正常
查询数据
select * from test_external where day="20190527"
可返回数据

以上亲证


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM