即使以非map/reduce的方式实现hadoop作业对我来说没有任何意义,我也需要在大学的项目中实现它hadoop作业如何作为非map/reduce运行?仅将减速机设置为0就足够了吗?
job.setNumreduceTasks(0)
还是有别的办法?我的应用程序与mapper和reducer类完美结合,计数问题得到了解决(类似于世界计数,但以生物学的方式)。
xpszyzbs1#
如果不想使用map/reduce操作,并且想在驱动程序上运行所有代码,则应实现工具接口,而不创建任何作业:
public class MyApp extends Configured implements Tool { public int run(String[] args) throws Exception { // your code } }
但是如果你只想使用Map器,你可以设置 job.setNumReduceTasks(0);
job.setNumReduceTasks(0);
xytpbqjk2#
事实上,您创建了一个job类,它要求您设置mapper和reducer类,这使得您必须执行mapreduce。如果必须使用hadoop,并且不想执行多个map或reduce操作(例如,不并行化操作),则不需要通过inputformat拆分文件(默认情况下,inputformat逐行读取文件)。如果使Map程序只读取一个分割,它将处理整个文件。您可以在mapper任务中解析整个文件,也可以将其直接传递到reducer并在那里执行。基本上,你只是让数据在那一点上重新标准化
2条答案
按热度按时间xpszyzbs1#
如果不想使用map/reduce操作,并且想在驱动程序上运行所有代码,则应实现工具接口,而不创建任何作业:
但是如果你只想使用Map器,你可以设置
job.setNumReduceTasks(0);
xytpbqjk2#
事实上,您创建了一个job类,它要求您设置mapper和reducer类,这使得您必须执行mapreduce。
如果必须使用hadoop,并且不想执行多个map或reduce操作(例如,不并行化操作),则不需要通过inputformat拆分文件(默认情况下,inputformat逐行读取文件)。
如果使Map程序只读取一个分割,它将处理整个文件。您可以在mapper任务中解析整个文件,也可以将其直接传递到reducer并在那里执行。
基本上,你只是让数据在那一点上重新标准化