Hadoop DistCp通过重命名来处理相同的文件名
是否有任何方法可以运行DistCp,但可以选择在文件名冲突时重命名?也许用一个例子来解释是最容易的 比如说,我正在抄袭hdfs:///foo 到hdfs:///bar,而foo包含以下文件:Hadoop DistCp通过重命名来处理相同的文件名,hadoop,mapreduce,distcp,Hadoop,Mapreduce,Distcp,是否有任何方法可以运行DistCp,但可以选择在文件名冲突时重命名?也许用一个例子来解释是最容易的 比如说,我正在抄袭hdfs:///foo 到hdfs:///bar,而foo包含以下文件: hdfs:///foo/a hdfs:///foo/b hdfs:///foo/c 而bar包含以下内容: hdfs:///bar/a hdfs:///bar/b 然后,在复制之后,我希望条形图包含以下内容: hdfs:///bar/a hdfs:///bar/a-copy1 hdfs:///bar/b
hdfs:///foo/a
hdfs:///foo/b
hdfs:///foo/c
而bar包含以下内容:
hdfs:///bar/a
hdfs:///bar/b
然后,在复制之后,我希望条形图包含以下内容:
hdfs:///bar/a
hdfs:///bar/a-copy1
hdfs:///bar/b
hdfs:///bar/b-copy1
hdfs:///bar/c
如果没有这样的选择,最可靠/有效的方法是什么?我自己开发的distcp版本当然可以完成,但这似乎需要大量的工作,而且很容易出错。基本上,我根本不关心文件名,只关心它们的目录,我希望定期将大量数据复制到“合并”目录中。Distcp没有这个选项。如果您使用的是javaapi,那么可以通过检查目标路径是否存在并在其已经存在的情况下更改路径来轻松处理。您可以使用
方法检查文件系统对象是否存在(路径p)
DistCp2是否有一个-overwrite选项;我不想覆盖旧文件。我想要旧文件和新文件,即使它必须更改文件名以同时拥有这两个文件。