最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Hadoop之MapReduce单元测试

来源:懂视网 责编:小采 时间:2020-11-09 13:20:55
文档

Hadoop之MapReduce单元测试

Hadoop之MapReduce单元测试:通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数。而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Context对象(大于等于0.20.0)。 下面是一个简单的WordCount例子:(使用的是新AP
推荐度:
导读Hadoop之MapReduce单元测试:通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数。而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Context对象(大于等于0.20.0)。 下面是一个简单的WordCount例子:(使用的是新AP

通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数。而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Context对象(大于等于0.20.0)。 下面是一个简单的WordCount例子:(使用的是新API) 在开始之

通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数。而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Context对象(大于等于0.20.0)。

下面是一个简单的WordCount例子:(使用的是新API)

在开始之前,需要导入以下包:

1.Hadoop安装目录下和lib目录下的所有jar包。

2.JUnit4

3.Mockito

?

map函数:

public class WordCountMapper extends Mapper {
	private static final IntWritable one = new IntWritable(1);
	private Text word = new Text();
	@Override
	protected void map(LongWritable key, Text value,Context context)
	throws IOException, InterruptedException {
	String line = value.toString();	// 该行的内容
	String[] words = line.split(";");	// 解析该行的单词
	for(String w : words) {
	word.set(w);
	context.write(word,one);
	}
	}
}

?reduce函数:

public class WordCountReducer extends Reducer {
	@Override
	protected void reduce(Text key, Iterable values,Context context)
	throws IOException, InterruptedException {
	int sum = 0;
	Iterator iterator = values.iterator();	// key相同的值集合
	while(iterator.hasNext()) {
	int one = iterator.next().get();
	sum += one;
	}
	context.write(key, new IntWritable(sum));
	}
}

?测试代码类:

public class WordCountMapperReducerTest {
	@Test
	public void processValidRecord() throws IOException, InterruptedException {
	WordCountMapper mapper = new WordCountMapper();
	Text value = new Text("hello");
	org.apache.hadoop.mapreduce.Mapper.Context context = mock(Context.class);
	mapper.map(null, value, context);
	verify(context).write(new Text("hello"), new IntWritable(1));
	}
	@Test
	public void processResult() throws IOException, InterruptedException {
	WordCountReducer reducer = new WordCountReducer();
	Text key = new Text("hello");
	// {"hello",[1,1,2]}
	Iterable values = Arrays.asList(new IntWritable(1),new IntWritable(1),new IntWritable(2));
	org.apache.hadoop.mapreduce.Reducer.Context context = mock(org.apache.hadoop.mapreduce.Reducer.Context.class);
	reducer.reduce(key, values, context);
	verify(context).write(key, new IntWritable(4));	// {"hello",4}
	}
}

?

具体就是给map函数传入一行数据-"hello"

map函数对数据进行处理,输出{"hello",0}

reduce函数接受map函数的输出数据,对相同key的值求和,并输出。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—



  • 声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    Hadoop之MapReduce单元测试

    Hadoop之MapReduce单元测试:通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数。而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Context对象(大于等于0.20.0)。 下面是一个简单的WordCount例子:(使用的是新AP
    推荐度:
    标签: 测试 情况下 单元
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top