我有一个数据文件,我的任务是使用map reduce从文件的每一行创建一个新数据,因为文件中的数据很大。 例如:文件包含:表达式(3-4 * 7-4),我需要从这个表达式(3 + 4/7 * 4)中随机创建一个新的表达式。当我使用map reduce实现任务时,我使用map进行更改,并减少到只是从mapper接收数据并对它们进行排序使用map只执行主要任务是否正确?
答案 0 :(得分:0)
您的实施是正确的。如果您不希望任何碰巧相同的表达式被组合,请确保映射器的键输出都是唯一的。
例如,既然你说你有一个庞大的数据文件,你可能会得到两个表达式,例如3-4*7-4
和3*4/7+4
,而这两个表达式都是{{1 }}。如果使用表达式作为键,则只对两个表达式调用一次reducer。如果您不希望发生这种情况,请确保为每个密钥使用唯一的编号。
答案 1 :(得分:0)
如果您不需要对地图结果进行排序 - 您将0设置为减少(通过执行
)job.setNumReduceTasks(0);
在您的驱动程序代码中) 这项工作只被称为地图。