如何在map reduce中创建输出文件(part-m-0001 / part-r-0001)

时间:2014-03-03 07:16:35

标签: hadoop mapreduce

据我所知,map reduce输出存储在名为part-r- * for reducer和part-m- * for mapper的文件中。

当我运行mapreduce作业时,有时会将整个输出放在一个文件中(大小约为150MB),有时几乎相同的数据大小我得到两个输出文件(一个100mb和另外50mb)。这对我来说似乎很随机。我找不到任何理由。

我想知道它是如何决定将这些数据放在单个或多个输出文件中的。如果我们能以任何方式控制它。

由于

2 个答案:

答案 0 :(得分:4)

与Jijo在这里的答案中指定的不同 - 文件的数量取决于Reducers / Mappers的数量。

它与群集中的物理节点数无关。

规则是:一个Reducer的part-r- *文件。 Reducers的数量由 job.setNumReduceTasks();

设置

如果你的工作中没有Reducers - 那么一个Mapper的一个part-m- *文件。一个InputSplit有一个Mapper(通常 - 除非你使用自定义的InputFormat实现,否则输入数据的一个HDFS块有一个InputSplit)。

答案 1 :(得分:1)

输出文件part-m- *和part-r- *的数量分别根据 map任务的数量和 reduce tasks 的数量来设置。