使ってます
drop table <table_name>
同じスキーマと名前でテーブルを再作成すると、古いデータが返されます。 hdfsファイルシステムからテーブルディレクトリを削除して、データを完全に削除する必要がありますか?
削除する前に、外部テーブルを内部テーブルに変更する必要があります。
例
beeline> ALTER TABLE $tablename SET TBLPROPERTIES('EXTERNAL'='False'); // make the table as internal
その後:
beeline> drop table $tablename; //if you drop the table data will be dropped as well.
Penszに同意しますが、若干の変更はありますが、ドロップする必要はありませんテーブルです。外部のhdfsファイルを新しいファイルで置き換えます(置き換えられたファイルの構造は同じである必要があります)。前の表のselect *を実行すると、古いデータではなく新しいデータが含まれていることがわかります。 1。
外部テーブルは基本的に、データのスキーマとファイルの場所のみを示します。多くのファイルを同じ場所に追加でき、テーブルにはこれらのファイルに関連するすべてのデータが自動的に含まれます。同様に、任意のデータを置き換えることができ、自動的にテーブルにこれが反映されます。
より多くのhdfsスペースが必要な場合を除いて、hdfs内のディレクトリを削除する必要はありません。
新しいデータを置き換えたい場合は、hdfsのファイルを置き換えるだけです。
他の用途にテーブル名を使用したい場合は、テーブルをドロップし、hdfs内のディレクトリを削除します。
実際、これはデータを失うことなく、テーブルのスキーマを変更できる(たとえば、フィールド名を変更したり、2つのフィールドを1つのフィールドに連結したりしたい)非常に便利な機能だと思います。
あなたはこのリンクをチェックすることができます、それは役立つかもしれません
最初に、次のコマンドを使用してテーブルのパスを取得します。
ハイブ>フォーマットされたデータベース名。テーブル名を記述してください;
次に、説明に表示される場所全体をコピーします。例:/user/Hive/warehouse/database_name.db/table_name
この後、次のコマンドを使用して、指定されたテーブルからすべてのデータを切り捨てます。
***Hive> dfs -rmr /user/Hive/warehouse/database_name.db/table_name;***
OR
***Hive> dfs -rm -r /user/Hive/warehouse/database_name.db/table_name;***
次に、DROP TABLEコマンドを使用して完全にワイプできます。
実際、EXTERNAL TABLESを削除してもデータは削除されません。
TRUNCATE TABLEを使用して、データを取り除くことができます。
ここにドキュメント: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TruncateTable
次に、必要に応じてDROP TABLEを使用してスキーマを削除します
外部テーブルの場合、テーブルを削除すると、スキームが削除されます
だからあなたは手動でHDFSからファイルを削除する必要があります
または新しいテーブルを作成し、tblプロパティで別のファイルの場所を指定します