2012-11-24 8 views

答えて

1

さらにhdfsスペースが必要な場合を除いて、hdfsのディレクトリを削除する必要はありません。

新しいデータを置き換えたい場合は、hdfsのファイルを置き換えるだけで済みます。

他の目的でテーブル名を使用する場合は、テーブルを削除してhdfs内のディレクトリを削除してください。

実際、これは、データを失うことなく、テーブルのスキーマ(たとえば、フィールド名を変更したり、2つのフィールドを1つのフィールドに連結したいなど)を変更できる非常に便利な機能だと思います。

+1

私の問題は、データを削除する必要がありますが、同じ名前とスキーマを持つテーブルを再作成する必要がありますか? – amrk7

+4

hdfsファイルのdrop tableを削除します。 hdfsで新しいファイルをインポートし、新しいテーブルを作成します。 – pensz

2

私はpenszに同意しますが、少し変更すると、はテーブルを落とす必要はありません。外部のhdfsファイルを置き換える(置き換えられたファイルの構造は同じでなければなりません)、前のテーブルのselect *を実行すると、古いデータではなく新しいデータが追加されます1。

外部テーブルは、基本的にデータのスキーマとファイルの場所のみを示します。同じ場所に多くのファイルを追加することができます。テーブルには、これらのファイルに関連するすべてのデータが自動的に格納されます。同様に、任意のデータを置き換えることができ、自動的にテーブルに反映されます。

+1

テーブルが分割されている場合、わずかな変更が必要です。私はあなたのテーブルisntを前提にしています。 –

+0

ありがとう!たくさんの情報を書きます – amrk7

1

まず次のコマンドを使用して、テーブルのパスを得るのを助けるかもしれない、このリンクをチェックアウトすることができます:

ハイブ>フォーマットさ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コマンドを使用します。

0

それが外部表の場合、表をドロップすると、あなただけのスキームに

を削除されることを意味しますので、手動で新しいテーブルを作成HDFS

または からファイルを削除する必要があり、別のを与えますファイルの場所をtblのプロパティ