我有一个hadoop应用程序 - 取决于参数 - 只需要输入目录中的某些(少数!)输入文件。我现在的问题是:跳过这些文件的最佳位置(尽可能早读)在哪里?现在我定制了一个RecordReader来处理这个问题,但我想知道我是否可以更快地跳过这些文件?在我目前的实施中,由于不相关的文件,hadoop仍然有巨大的开销。
也许我应该补充一点,很容易看出我是否需要某个输入文件。如果文件名以参数开头,则需要它。按层次结构化我的输入目录可能是一个解决方案,但对于我的项目来说不太可能,因为每个文件最终会在某个目录中孤立。
答案 0 :(得分:1)
我已成功使用TextInputFormat上的setInputPaths()方法指定包含逗号分隔文件名的单个String。
答案 1 :(得分:1)
我建议您通过在输入Path
上应用适当的模式来过滤掉输入文件,如下所述:https://stackoverflow.com/a/13454344/1050422
请注意,此解决方案不考虑子目录。改变它
能够以递归方式访问基本路径中的所有子目录。