![MapReduce编程——文件的合并与去重,第1张 MapReduce编程——文件的合并与去重,第1张](/aiimages/MapReduce%E7%BC%96%E7%A8%8B%E2%80%94%E2%80%94%E6%96%87%E4%BB%B6%E7%9A%84%E5%90%88%E5%B9%B6%E4%B8%8E%E5%8E%BB%E9%87%8D.png)
MapReduce编程——
文件的合并与去重
目录
一.问题描述
二.具体代码
三.具体 *** 作
一.问题描述
对输入的多个文件进行合并,并剔除其中重复的内容,去重后的内容输出到一个文件中。
主要思路:根据reduce的过程特性,会自动根据key来计算输入的value集合,把数据作为key输出给reduce,无论这个数据出现多少次,reduce最终结果中key只能输出一次。
1.实例中每个数据代表输入文件中的一行内容,map阶段采用Hadoop默认的作业输入方式。将value设置为key,并直接输出。 map输出数据的key为数据,将value设置成空值
2.在MapReduce流程中,map的输出经过shuffle过程聚集成后会交给reduce
3.reduce阶段不管每个key有多少个value,它直接将输入的key复制为输出的key,并输出(输出中的value被设置成空)。用一行作为key,value是空,那么在reduce时进行“汇总”,还是只有一个key,即一行,value还是空。所以即去重了。
二.具体代码
package Test;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class FileMerge {
//自定义Mapper类
public static class MyMapper extends Mapper
评论列表(0条)