【问题标题】:Hadoop DistCp handle same file name by renamingHadoop DistCp 通过重命名处理相同的文件名
【发布时间】:2014-06-22 04:07:21
【问题描述】:

有什么方法可以运行 DistCp,但可以选择在文件名冲突时重命名?也许用一个例子来解释是最容易的。

假设我正在复制到 hdfs:///foo 到 hdfs:///bar,而 foo 包含这些文件:

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

并且 bar 包含这些:

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

然后在复制之后,我希望 bar 包含以下内容:

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

如果没有这样的选择,那么最可靠/最有效的方法是什么?我自己开发的 distcp 版本当然可以完成,但这似乎工作量很大,而且很容易出错。基本上,我根本不关心文件名,只关心它们的目录,我想定期将大量数据复制到“合并”目录中。

【问题讨论】:

  • DistCp2 有一个 -overwrite 选项。
  • 我知道;我不想覆盖旧文件。我想要旧文件和新文件,即使它必须更改文件名才能同时拥有。

标签: hadoop mapreduce distcp


【解决方案1】:

Distcp 没有那个选项。如果您为此使用 Java API,则可以通过检查目标路径是否存在并在路径已经存在时更改路径来轻松处理它。您可以使用exists(Path p) 方法通过FileSystem 对象检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多