hadoop 1.0.4 版本mapreduce 单元测试

1. 开发环境下载mrunit包 

    https://repository.apache.org/content/repositories/releases/org/apache/mrunit/mrunit

 2. 编写map reduce 程序

1. mapper
/**
 * 类说明。
 *
 * @author East271536394
 * @version 2013-4-6 下午02:07:36
 */
public class ReverIndexMapper extends Mapper<LongWritable, Text, Text, Text> {
	
	@Override
	protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
		String line = value.toString();
		try {
			String[] lineSplit = line.split(" ");
			String num1 = lineSplit[0];
			String num2 = lineSplit[1];
			context.write(new Text(num1), new Text(num2));
		} catch (Exception se) {
			se.printStackTrace();
		}
	}
}
2. reduce
/**
 * 类说明。
 *
 * @author East271536394
 * @version 2013-4-6 下午02:08:07
 */
public  class ReverIndexReduce extends Reducer<Text, Text, Text, Text> {

	@Override
	protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException,
			InterruptedException {
		String result = "";
		String value;
		for (Text text : values) {
			value = text.toString();
			result += value + "|";
		}
		System.out.println("result:" + result);
		context.write(key, new Text(result));
	}
}

3. 编写mrtest类

1. mapper test

/**
 * 类说明。
 *
 * @author East271536394
 * @version 2013-4-10 下午09:57:48
 */
public class ReverIndexMapperTest extends TestCase {

	private Mapper<LongWritable, Text, Text, Text> mapper;

	private MapDriver<LongWritable, Text, Text, Text> mapDriver;

	@Before
	public void init() {
		mapper = new ReverIndexMapper();
		mapDriver = new MapDriver<LongWritable, Text, Text, Text>(mapper);
	}

	@Test
	public void test() {
		try {
			String line = "test is";
			LongWritable lw = new LongWritable(1);
			mapDriver.withInput(lw, new Text(line));
			mapDriver.withOutput(new Text("test"), new Text("is"));
			mapDriver.runTest();
		} catch (Exception se) {
			se.printStackTrace();
		}
	}
}
2. reduce mr test

/**
 * 类说明。
 *
 * @author East271536394
 * @version 2013-4-14 上午10:24:07
 */
public class ReverIndexReduceTest extends TestCase {

	private Reducer<Text, Text, Text, Text> reduce;

	private ReduceDriver<Text, Text, Text, Text> reduceDriver;

	@Before
	public void init() {
		reduce = new ReverIndexReduce();
		reduceDriver = new ReduceDriver<Text, Text, Text, Text>(reduce);
	}

	@Test
	public void test() {
		try {
			String key = "10086";
			List<Text> values = new ArrayList<Text>();
			values.add(new Text("181"));
			values.add(new Text("182"));
			values.add(new Text("183"));
			reduceDriver.withInput(new Text(key), values);
			reduceDriver.withOutput(new Text(key), new Text("181|182|183|"));
			reduceDriver.runTest();
		} catch (IOException e) {
		}
	}
}

3. mapreduce test

/**
 * 类说明。
 *
 * @author East271536394
 * @version 2013-4-14 下午12:07:27
 */
public class ReverIndexMapReduceTest extends TestCase {

	private Reducer<Text, Text, Text, Text> reduce;

	private Mapper<LongWritable, Text, Text, Text> mapper;

	private MapReduceDriver<LongWritable, Text, Text, Text, Text, Text> mapReduceDriver;

	@Before
	public void init() {
		mapper = new ReverIndexMapper();
		reduce = new ReverIndexReduce();
		mapReduceDriver = new MapReduceDriver<LongWritable, Text, Text, Text, Text, Text>(mapper, reduce);
	}

	private String generateKey()
	{
		StringBuilder sb = new StringBuilder();
		sb.append("test is");
		return sb.toString();
	}
	@Test
	public void testMapreduce() throws Exception {
		init();
		String line = generateKey();
		LongWritable lw = new LongWritable(1);
		mapReduceDriver.withInput(lw, new Text(line));
		mapReduceDriver.withOutput(new Text("test"), new Text("is|"));
		mapReduceDriver.runTest();

	}

}

参考:https://cwiki.apache.org/confluence/display/MRUNIT/MRUnit+Tutorial

weixin151云匹面粉直供微信小程序+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值