可以采取哪些措施来防止Hive中的意外数据删除?

时间:2013-04-19 11:35:36

标签: hive

今天我不小心将一个表声明为非外部表,然后删除它,导致基础数据被删除。我可以做些什么来防止做这样的事情(除了备份,我们这样做)?

我们几乎只使用外部表,所以如果我们可以完全关闭非外部表功能,或者在我们声明一个表时需要像FORCE这样的标志,那就太好了。

注意:我们使用Hive版本0.8

1 个答案:

答案 0 :(得分:1)

我不认为你的用例有一个很好的解决方案。

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

更困难和更高维护的解决方案是修补Hive源以禁止在没有EXTERNAL关键字的情况下创建表/使EXTERNAL成为默认/需要FORCE关键字来创建托管表/无论您想要的确切行为。< / p>

我能想到的最后一个解决方案就是要非常小心地将所有表格设为EXTERNAL。显然不是一个完美的解决方案,或者你不会问这个问题,但它会是我用过的那个。您最有条件决定其他解决方案的风险和成本是否值得获益。