hadoop中关于mapreduce的单元测试

来源:互联网 发布:手机声音剪辑软件 编辑:程序博客网 时间:2024/05/29 19:24

这个功能好像是CDH那边开发的。。。

1.  首先下载jar包:hadoop-0.21.0-mrunit.jar。(经测试,这个jar包是关联旧API的。请自己根据情况决定)

2.  在eclipse的build path中加入此jar包。

3.  编写测试程序:

package unittest;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapred.JobConf;import org.apache.hadoop.mapred.OutputCollector;import org.apache.hadoop.mapred.Reducer;import org.apache.hadoop.mapred.Reporter;import org.apache.hadoop.mrunit.ReduceDriver;import org.junit.Before;import org.junit.Test;@SuppressWarnings("all")public class ReducerTest {public static class ReducerClass implements Reducer<Text, IntWritable, Text, IntWritable> {private IntWritable intvalue = new IntWritable(0);@Overridepublic void configure(JobConf job) {job.setJobName("test");System.err.println("in configure method");System.out.println("job name is set to: ---------preset--------" +"------------------------" + job.getJobName());//System.out.println("job.getJobEndNotificationURI() -----" +//"-----preset------------" + job.getJobEndNotificationURI());//System.out.println("job.getJobLocalDir() -----" +//"------preset-----------" + job.getJobLocalDir());//System.out.println("job.getJobPriority() -----" +//"------preset-----------" + job.getJobPriority());}@Overridepublic void close() throws IOException {System.err.println("in close method");}@Overridepublic void reduce(Text key, Iterator<IntWritable> values,OutputCollector<Text, IntWritable> output, Reporter reporter)throws IOException {int sum = 0;while (values.hasNext()) {sum += values.next().get();}intvalue.set(sum);output.collect(key, intvalue);}}private Reducer reducer;private ReduceDriver reducerDriver;@Beforepublic void init() {reducer = new ReducerClass();reducerDriver = new ReduceDriver(reducer);}@Testpublic void test() {String key = "key";List values = new ArrayList();values.add(new IntWritable(5));values.add(new IntWritable(3));reducerDriver.withInput(new Text(key), values) .withOutput(new Text("key"), new IntWritable(8)) .runTest();}}

0 0
原创粉丝点击