5

DistCp を実行する方法はありますが、ファイル名の衝突時に名前を変更するオプションはありますか? 例を挙げて説明するのが最も簡単かもしれません。

hdfs:///foo から hdfs:///bar にコピーしていて、foo に次のファイルが含まれているとします。

hdfs:///foo/a
hdfs:///foo/b
hdfs:///foo/c

バーには次のものが含まれます。

hdfs:///bar/a
hdfs:///bar/b

次に、コピーの後、バーに次のようなものを含めたいと思います:

hdfs:///bar/a
hdfs:///bar/a-copy1
hdfs:///bar/b
hdfs:///bar/b-copy1
hdfs:///bar/c

そのようなオプションがない場合、これを行うための最も信頼できる/効率的な方法は何ですか? 私自身の自家製バージョンの distcp は確かにそれを行うことができましたが、それは多くの作業とかなりエラーが発生しやすいようです。基本的に、ファイル名は気にせず、ディレクトリだけを気にします。定期的に大量のデータを「統合」ディレクトリにコピーしたいと考えています。

4

1 に答える 1

1

Distcp にはそのオプションがありません。Java API を使用している場合は、宛先パスが存在するかどうかを確認し、既に存在する場合はパスを変更することで簡単に処理できます。FileSystemメソッドを使用してオブジェクトで確認できますexists(Path p)

于 2014-08-13T17:28:27.533 に答える