在我的 mapper 类中,我逐行读取文件并在每行上执行一些字符串操作(即从字符串中删除特殊字符),然后在 reducer 中将每行存储在一个新文件中。
基本上我的 reducer 只创建文件并将每一行写入新文件,所以我的映射器有可能创建文件而不是将数据传递给 reducer。这意味着我不想要 reducer 并在映射器中执行它的操作。 我对 Mapreduce 了解不多,所以任何类型的帮助都是可观的
最佳答案
是的,你想要的是很有可能的,你需要的是一个只有 map 的工作。即只有 mapper 而没有 reducer 的作业。
实现它的方法是在驱动程序类中将 reducer 的数量设置为 0。
job.setNumReduceTasks(0);
可以找到有关此主题的更详细的博客 here
为每个输入行生成一个文件考虑直接从您的映射器使用 hdfs api,即 FileSystem和 FileStatus
关于java - 在 Mapper 类中执行 Reducer 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522013/