【发布时间】:2014-05-07 15:27:48
【问题描述】:
在我的映射器类中,我逐行读取文件并在每一行上执行一些字符串操作(即从字符串中删除特殊字符),然后在减速器中每一行都存储在一个新文件中。
基本上,我的 reducer 只创建文件并将每一行写入新文件,因此我的映射器可能会创建文件而不是将数据传递给 reducer。这意味着我不想要reducer 并在mapper 中执行它的操作。 我对 Mapreduce 了解不多,所以任何类型的帮助都会很明显
【问题讨论】:
在我的映射器类中,我逐行读取文件并在每一行上执行一些字符串操作(即从字符串中删除特殊字符),然后在减速器中每一行都存储在一个新文件中。
基本上,我的 reducer 只创建文件并将每一行写入新文件,因此我的映射器可能会创建文件而不是将数据传递给 reducer。这意味着我不想要reducer 并在mapper 中执行它的操作。 我对 Mapreduce 了解不多,所以任何类型的帮助都会很明显
【问题讨论】:
是的,您想要的非常有可能,您需要的只是地图工作。即只有映射器但没有减速器的工作。
实现它的方法是在驱动类中将减速器的数量设置为 0。
job.setNumReduceTasks(0);
关于这个主题的更详细的博客可以找到here
要为每个输入行生成一个文件考虑直接从您的映射器使用 hdfs api,即 FileSystem 和 FileStatus
【讨论】:
LazyOutputFormat...