将Hadoop MapReduce限制为特定的文件扩展名

将Hadoop MapReduce限制为特定的文件扩展名,hadoop,mapreduce,Hadoop,Mapreduce,我正在尝试在群集上运行仅在特定文件扩展名上运行的MapReduce作业。我们在集群上有一堆异构数据,对于这个特定的作业,我只想在.jpg上执行。有没有一种方法可以做到这一点,而不限制它在映射器。当你执行任务时,这似乎应该是一件容易的事情。我在想hadoop fs JobName/users/myuser/data/*.jpg/users/myuser/output之类的东西 您的示例应该可以像编写的那样工作,但是您需要使用调用setInputPaths(作业,字符串)方法的输入格式进行检查,因为

我正在尝试在群集上运行仅在特定文件扩展名上运行的MapReduce作业。我们在集群上有一堆异构数据,对于这个特定的作业,我只想在.jpg上执行。有没有一种方法可以做到这一点,而不限制它在映射器。当你执行任务时,这似乎应该是一件容易的事情。我在想hadoop fs JobName/users/myuser/data/*.jpg/users/myuser/output之类的东西

您的示例应该可以像编写的那样工作,但是您需要使用调用setInputPaths(作业,字符串)方法的输入格式进行检查,因为这将把glob字符串“/users/myuser/data/*.jpg”解析为/users/myuser/data中的各个jpg文件。

您是正确的,有没有办法使其递归?我想从HDFS的根目录运行它。看起来这是一个常见的问题,并且已经被修复。这里有一个链接。谢谢你回答我原来的问题!如果有固定数量的目录,则可以递归:
/users/myuser/data/*/*/*/*。jpg
将匹配
/users/myuser/data/
中2个目录深的所有jpg文件。正如您所指出的,可变深度全局化(例如
/users/myuser/data/***.jpg
)还不受支持。