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