2017-03-08 4 views
2

私はhadoop 2.7.3とハイブ2.1.1を使用しています。ハイブ管理テーブルに上書きしてファイルを失う

HDFSには8-9ファイルがありました。内部ハイブテーブルを1つ作成しました。私はそのテーブルの8つのファイルのうちの最初のファイルをロードしました。そのデータに対していくつかの操作を行いました。

その後、それらのファイルの2番目をそのテーブルに上書きすることでロードしました。

load data inpath '/path/path1/first.csv' into table ABC; 

load data inpath '/path/path1/second.csv' overwrite into table ABC; 

2番目のデータでいくつかの操作を行いましたか?

次に、「上書き」を使用して最後のファイルまで3番目のファイルをロードしました。

ここでは、それらのファイルがすべて元の場所にないことがわかります。また、/ user/hive/warehouse/ABCにはファイルの最後だけがあります。

これらの以前のファイルはどこにありますか?彼らはハイブテーブルに上書きするために失われますか?私は "hdfs dfs -ls -R/| grep "filename"を実行しましたが、私のファイルを見つけることができませんでした。

答えて

1

LOAD DATA INPATHは、ファイルをソースHDFSパスからテーブルウェアハウスパスに移動(コピーしない)します。

OVERWRITEは、既にテーブルに存在するファイル(HDFSゴミ箱が有効な場合は、ファイルをTrashに移動)を削除し、パスに指定されたファイルで置き換えます。

1

LOAD DATA LOCAL INPATHコピーファイル。
LOAD DATA INPATHがファイルを移動します。
overwrite新しいファイルを移動する前に既存のファイルを削除します。

+0

何らかの方法で削除したファイルを回復できますか? – earl

+0

HDFSゴミ箱を有効にしてから、「多分」でない限り、そうは思わないでしょう。 –

関連する問題