Hive 可以采取哪些措施防止在配置单元中意外删除数据?

Hive 可以采取哪些措施防止在配置单元中意外删除数据?,hive,Hive,今天,我意外地将一个表声明为非外部表,然后将其丢弃,导致底层数据被删除。我可以做些什么来防止这样做(除了备份之外,我们也会这样做) 我们基本上只使用外部表,所以如果我们可以完全关闭非外部表特性,或者在声明一个表时需要一个类似于标志的强制,那就太好了 注意:我们使用的是Hive版本0.8我认为没有适合您的用例的好解决方案 一个快速而肮脏的解决方案是更改仓库目录的权限,使其无法写入。这将阻止除HDFS超级用户之外的内部表的创建。您可以授予用户/组权限,以便在需要创建内部表时,可以通过切换用户来实现。

今天,我意外地将一个表声明为非外部表,然后将其丢弃,导致底层数据被删除。我可以做些什么来防止这样做(除了备份之外,我们也会这样做)

我们基本上只使用外部表,所以如果我们可以完全关闭非外部表特性,或者在声明一个表时需要一个类似于标志的强制,那就太好了


注意:我们使用的是Hive版本0.8

我认为没有适合您的用例的好解决方案

一个快速而肮脏的解决方案是更改仓库目录的权限,使其无法写入。这将阻止除HDFS超级用户之外的内部表的创建。您可以授予用户/组权限,以便在需要创建内部表时,可以通过切换用户来实现。这种解决方案可能会产生意想不到的后果,但只要您完全远离托管表,我就无法立即想到任何后果

一个更困难、维护更高的解决方案是,对配置单元源进行修补,以禁止在没有外部关键字/make EXTERNAL作为默认值/require-FORCE关键字的情况下创建表/无论您想要的确切行为是什么

我能想到的最后一个解决方案是非常小心地将所有表都外部化。很明显,这不是一个完美的解决方案,或者你不会问这个问题,但这将是我使用的一个。您最有资格决定其他解决方案的风险和成本是否值得受益