ハイブ外部テーブルとして使用するためにファイルを HDFS にインポートするコードを作成しようとしています。次のようなものを使用することがわかりました:
ふー | ssh ホスト名 "hdfs dfs -put - /destination/$FILENAME"
一時ファイルが作成され、完了時に名前が変更されるタイプのエラーが発生する可能性があります。これにより、ディレクトリの一覧表示とクエリの実行の間でハイブの競合状態が発生する可能性があります。
1 つの回避策は、一時ディレクトリにコピーし、ファイルを所定の位置に "hdfs dfs mv" することです。
具体的および一般的/学術的な質問は次のとおりです。
- 「hdfs dfs -mv」コマンドはアトミックですよね?
- 他にアトミックな HDFS コマンドまたは操作は?
- ほぼ同時に発行された 2 つの「hdfs dfs -mkdir」コマンドは、両方とも成功したと信じることができますか?
- ファイルを所定の位置に移動するときにハイブとの競合状態を回避するより良い方法はありますか?