とともに、外部ハイブのテーブルを削除する方法を、私はハイブ - 私は、同じスキーマと名前のテーブルを再作成する場合は、データ
drop table <table_name>
を使用していますが、私は戻って、古いデータを取得しています。 データを完全に削除するには、hdfsファイルシステムからテーブルディレクトリを削除する必要がありますか?
とともに、外部ハイブのテーブルを削除する方法を、私はハイブ - 私は、同じスキーマと名前のテーブルを再作成する場合は、データ
drop table <table_name>
を使用していますが、私は戻って、古いデータを取得しています。 データを完全に削除するには、hdfsファイルシステムからテーブルディレクトリを削除する必要がありますか?
さらにhdfsスペースが必要な場合を除いて、hdfsのディレクトリを削除する必要はありません。
新しいデータを置き換えたい場合は、hdfsのファイルを置き換えるだけで済みます。
他の目的でテーブル名を使用する場合は、テーブルを削除してhdfs内のディレクトリを削除してください。
実際、これは、データを失うことなく、テーブルのスキーマ(たとえば、フィールド名を変更したり、2つのフィールドを1つのフィールドに連結したいなど)を変更できる非常に便利な機能だと思います。
私はpenszに同意しますが、少し変更すると、はテーブルを落とす必要はありません。外部のhdfsファイルを置き換える(置き換えられたファイルの構造は同じでなければなりません)、前のテーブルのselect *を実行すると、古いデータではなく新しいデータが追加されます1。
外部テーブルは、基本的にデータのスキーマとファイルの場所のみを示します。同じ場所に多くのファイルを追加することができます。テーブルには、これらのファイルに関連するすべてのデータが自動的に格納されます。同様に、任意のデータを置き換えることができ、自動的にテーブルに反映されます。
テーブルが分割されている場合、わずかな変更が必要です。私はあなたのテーブルisntを前提にしています。 –
ありがとう!たくさんの情報を書きます – amrk7
まず次のコマンドを使用して、テーブルのパスを得るのを助けるかもしれない、このリンクをチェックアウトすることができます:
ハイブ>フォーマットさdatabase_name.table_nameとを説明します。指定されたテーブルからすべてのデータを切り捨てるためのコマンドを次のこの使用後 /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コマンドを使用します。
それが外部表の場合、表をドロップすると、あなただけのスキームに
を削除されることを意味しますので、手動で新しいテーブルを作成HDFS
または からファイルを削除する必要があり、別のを与えますファイルの場所をtblのプロパティ
私の問題は、データを削除する必要がありますが、同じ名前とスキーマを持つテーブルを再作成する必要がありますか? – amrk7
hdfsファイルのdrop tableを削除します。 hdfsで新しいファイルをインポートし、新しいテーブルを作成します。 – pensz