java—如何将hadoop mapreduce作业实现为非map/reduce(即使没有任何意义)?

bkhjykvo  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(310)

即使以非map/reduce的方式实现hadoop作业对我来说没有任何意义,我也需要在大学的项目中实现它
hadoop作业如何作为非map/reduce运行?仅将减速机设置为0就足够了吗?

job.setNumreduceTasks(0)

还是有别的办法?
我的应用程序与mapper和reducer类完美结合,计数问题得到了解决(类似于世界计数,但以生物学的方式)。

xpszyzbs

xpszyzbs1#

如果不想使用map/reduce操作,并且想在驱动程序上运行所有代码,则应实现工具接口,而不创建任何作业:

public class MyApp extends Configured implements Tool {

   public int run(String[] args) throws Exception {
     // your code
   }
}

但是如果你只想使用Map器,你可以设置 job.setNumReduceTasks(0);

xytpbqjk

xytpbqjk2#

事实上,您创建了一个job类,它要求您设置mapper和reducer类,这使得您必须执行mapreduce。
如果必须使用hadoop,并且不想执行多个map或reduce操作(例如,不并行化操作),则不需要通过inputformat拆分文件(默认情况下,inputformat逐行读取文件)。
如果使Map程序只读取一个分割,它将处理整个文件。您可以在mapper任务中解析整个文件,也可以将其直接传递到reducer并在那里执行。
基本上,你只是让数据在那一点上重新标准化

相关问题