我正在处理一个嵌套目录结构的工作,其中包含多个级别的文件:
one/
├── three/
│ └── four/
│ ├── baz.txt
│ ├── bleh.txt
│ └── foo.txt
└── two/
├── bar.txt
└── gaa.txt
当我添加 one/
作为输入路径时,没有文件被处理,因为没有文件在根级别立即可用。
我阅读了有关 job.addInputPathRecursively(..)
的内容,但这在最近的版本中似乎已被弃用(我使用的是 hadoop 1.0.2)。我已经编写了一些代码来遍历文件夹并使用 job.addInputPath(dir)
添加每个目录,直到由于某种原因尝试将目录作为输入文件处理时作业崩溃,例如- 尝试 fs.open(split.getPath())
,当 split.getPath()
是一个目录时(这发生在 LineRecordReader.java
).
我试图说服自己必须有一种更简单的方法来提供具有嵌套目录结构的作业。有什么想法吗?
编辑 - 显然有一个 open bug对此。
最佳答案
我没有找到关于此的任何文档,但 */*
有效。所以它是 -input 'path/*/*'
。
关于Hadoop MapReduce 提供嵌套目录作为作业输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210713/