1. ホーム
  2. hadoop

[解決済み] 単一ファイルをコピーする際にhadoop discpの問題が発生する

2022-02-08 17:08:36

質問

(注:並列化するためにdistcpを使用する必要があります。)

user/bhavesh フォルダに2つのファイルがあります。

user/bhavesh1 フォルダにファイルが1つあります。

user/bhavesh から /user/uday フォルダに2ファイルコピー (これは問題なく動作します)

user/uday フォルダが作成されます。

フォルダではなくファイルを作成する場合、/user/bhavesh1 から /user/uday1 フォルダに 1 ファイルをコピーする。

必要なのは、1つのファイルがある場合です。 /user/bhavesh1/emp1.csv を作成する必要があります。 /user/uday1/emp1.csv [uday1はディレクトリとして形成されるべきである]任意の提案やヘルプは非常に高く評価されます。

解決方法は?

unix システムでは、/user/uday1/ で終わるディレクトリ名をコピー先に指定すると、コピー先のディレクトリが作成されますが、hadoop fs -cp コマンドはコピー先のディレクトリがない場合、失敗します。

hdfsのdistcpでは、/で終わるファイル/ディレクトリ名は、単一ファイルであれば無視されます。回避策としては、distcpコマンドを実行する前に宛先ディレクトリを作成することです。-mkdirに-pオプションを追加すると、ディレクトリが既に存在するエラーを回避できます。

hadoop fs -mkdir -p /user/uday1  ; hadoop distcp /user/bhavesh1/emp*.csv /user/uday1/  

これは、ソースディレクトリ内の単一ファイルでも複数ファイルでも機能します。