使用Hive自管理的表的时候都担心如果误drop了表怎么办,因此Hive除了外部表的方式还提供了一个功能:ProtectMode(保护模式).
细心的同学会发现文档里其实提到过alter table enable/disable no_drop/offline
(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL),其中no_drop禁止直接drop table而offline是禁止表被读取.其实这些过能在Hive里被称为ProtectMode.
查看源码是支持四种模式:
1
2
3
4
|
publicstaticString FLAG_OFFLINE=
"OFFLINE"
;
//禁止读
publicstaticString FLAG_NO_DROP=
"NO_DROP"
;
//不许删除表
publicstaticString FLAG_NO_DROP_CASCADE =
"NO_DROP_CASCADE"
;
//不许删除分区
publicstatic String FLAG_READ_ONLY=
"READ_ONLY"
;
//只读,不过测试了下实际还不支持
|
这个特性的实现其实是在数据库里的table_params表里支持的,param_key=’Protect_mode’,而param_value则设置相应的mode.因此批量做no_drop/offline通过SQL操作是最方便的了:)
本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1334516,如需转载请自行联系原作者