hive防止重要table误删的方法:
1.HDFS层面开启trash功能 (fs.trash.interval)
数据删除后可以找回
2.创建外部表,CREATE EXTERNAL ***
删除表时只删除元数据,不删除data数据
下面3个方法是控制不能使用DROP TABLE
1.ALTER TABLE xxx ENABLE NO_DROP ,更改已经存在的表
2.CREATE TABLE xxx …..TBLPROPERTIES('PROTECT_MODE'='NO_DROP'),新表创建
3.批量更新,直接操作hive数据库好啦(关联tbls表和table_params表)。
mysql> SELECT * FROM table_params WHERE PARAM_KEY='PROTECT_MODE'G;
*************************** 1. row ***************************
TBL_ID: 36
PARAM_KEY: PROTECT_MODE
PARAM_VALUE: NO_DROP
设置NO_DROP后,删除表会报如下错误:
hive> DROP TABLE FILE_TEXT;
FAILED: Error in metadata: Table file_text is protected from being dropped
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask