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