今日、誤ってテーブルを非外部テーブルとして宣言してから削除したため、基になるデータが削除されました。このようなことを防ぐために私にできることは何ですか (私たちが行っているバックアップは別として)?
外部テーブルのみを使用することがほとんどなので、外部テーブル以外の機能を完全にオフにするか、宣言時に FORCE などのフラグを要求することができれば素晴らしいと思います。
注: Hive バージョン 0.8 を使用します。
今日、誤ってテーブルを非外部テーブルとして宣言してから削除したため、基になるデータが削除されました。このようなことを防ぐために私にできることは何ですか (私たちが行っているバックアップは別として)?
外部テーブルのみを使用することがほとんどなので、外部テーブル以外の機能を完全にオフにするか、宣言時に FORCE などのフラグを要求することができれば素晴らしいと思います。
注: Hive バージョン 0.8 を使用します。
あなたのユースケースに適した解決策はないと思います。
手っ取り早い解決策は、ウェアハウス ディレクトリのアクセス許可を変更して、書き込みができないようにすることです。これにより、HDFS スーパー ユーザー以外は内部テーブルを作成できなくなります。内部テーブルを作成する必要がある場合は、ユーザーを切り替えることでできるように、ユーザー/グループにアクセス許可を与えることができます。このソリューションによって意図しない結果が生じる可能性がありますが、管理されたテーブルから完全に離れている限り、私は何も考えられません。
より困難で高度なメンテナンスの解決策は、Hive ソースにパッチを適用して、EXTERNAL キーワードなしでテーブルを作成できないようにする/EXTERNAL をデフォルトにする/管理対象テーブルを作成するために FORCE キーワードを必要とする/必要な正確な動作が何であれ.
私が考えることができる最後の解決策は、すべてのテーブルを EXTERNAL にするように細心の注意を払うことです。明らかに完璧な解決策ではないか、質問をしなかったでしょうが、それは私が使用したものです。あなたは、他のソリューションのリスクとコストが利益に見合うかどうかを判断するのに最も適した立場にあります.