为什么我的Hadoop作业获取映射任务num=1,并生成300+;结果文件?

为什么我的Hadoop作业获取映射任务num=1,并生成300+;结果文件?,hadoop,hbase,Hadoop,Hbase,我有一份Hadoop的工作。 MR只有map,没有reduce。所以设置job.setNumReduces(0)。 输入文件大约有300个+ 然后我运行作业,我只能看到1个映射任务正在运行。完成它大约需要1个小时。 然后我检查结果,我可以在输出文件夹中看到300多个结果文件 有什么问题吗?或者这是正确的事情 我真的希望Map应该等于输入文件的num(而不是1)。我也不知道为什么输出文件num与输入文件num相同 hadoop作业是从oozie提交的 非常感谢你的帮助。 Xinsong当您将还原数

我有一份Hadoop的工作。 MR只有map,没有reduce。所以设置job.setNumReduces(0)。 输入文件大约有300个+

然后我运行作业,我只能看到1个映射任务正在运行。完成它大约需要1个小时。 然后我检查结果,我可以在输出文件夹中看到300多个结果文件

有什么问题吗?或者这是正确的事情

我真的希望Map应该等于输入文件的num(而不是1)。我也不知道为什么输出文件num与输入文件num相同

hadoop作业是从oozie提交的

非常感谢你的帮助。
Xinsong

当您将还原数设置为0时,您将看到生成的输出与仅由映射任务生成的输出相对应

输出中可能会生成大量与数据拆分相对应的文件。数据的每次拆分都将产生一个新的映射任务


在执行时,我假设您的文件大小相当大,而不是1。因此,生成大量文件是完全正确的

映射器的数量由输入拆分的数量控制。如果您使用默认的FileInputFormat,它将为每个文件创建一个inputsplit。 因此,如果您有300多个输入文件,则预计将运行300多个映射任务。您无法显式控制此(映射器的数量)


由于还原器的数量设置为0,映射器的所有输出都会写入到输出中,考虑到输出格式。这就是为什么您会得到300多个输出文件。

hadoop作业是从oozie提交的。hadoop作业是从oozie提交的。