机器学习和生物信息学实验室联盟
标题:
MRUnit单元测试使用范例
[打印本页]
作者:
tangzk
时间:
2013-4-4 19:28
标题:
MRUnit单元测试使用范例
Hadoop版本:1.0.3
MRUnit版本:0.9.0-incubting-hadoop1
JUnit4:4.8.2
注意由于MRUnit目前还处于变动阶段,上面的版本需要与Hadoop版本匹配,如果在运行出现一些意外的情况,有可能是因为版本不兼容导致,请前往:
http://mrunit.apache.org/general/downloads.html
,下载对应的版本。
目标:单元测试
排序
功能。
测试代码如下:
package cn.edu.xmu.dm.tangzk.mr;
import org.apache.hadoop.io.NullWritable;
public class RecordSortTest {
private RecordSortMapper mapper = null;
private RecordSortReducer reducer = null;
private RecordSortComparator comparator = null;
private MapReduceDriver<Object, Text, Text, NullWritable, Text, NullWritable> mrDriver = null;
@Before
public void setUp() throws Exception {
mapper = new RecordSortMapper();
reducer = new RecordSortReducer();
comparator = new RecordSortComparator();
mrDriver = MapReduceDriver.newMapReduceDriver(mapper, reducer);
mrDriver.withKeyOrderComparator(comparator);
}
@After
public void tearDown() throws Exception {
mrDriver = null;
reducer = null;
mapper = null;
}
@Test
public void test() {
Object o1 = new Object();
Text t1 = new Text("abc");
Text t2 = new Text("ab");
Text t3 = new Text("bcd");
Text t4 = new Text("abcd");
NullWritable val = NullWritable.get();
mrDriver.withInput(o1, t1).withInput(o1, t2).withInput(o1, t3)
.withInput(o1, t4).withOutput(t2, val).withOutput(t1, val)
.withOutput(t3, val).withOutput(t4, val).runTest();
}
}
复制代码
MRUnit基于JUnit测试框架,提供了MapDriver/ReduceDriver/MapReduceDriver工具类用于驱动map/reduce Job的运行,其要求传入待测的mapper/reducer作为参数。上面由于对整个mapreduce任务进行测试,因此使用MapReduceDriver工具类,如果只针对mapper或reducer,可分别使用MapDriver或ReduceDriver工具类。
Driver工具提供了编写mapreduce任务时用到的一些环境,一般用with开头,如withKeyOrderComparator(),withInput(),withConfiguration(),以及withOutput()用于检验是否符合预期。由于每个方法均返回自身Driver对象(方法链模式:
http://en.wikipedia.org/wiki/Method_chaining
),因此可以将所有的方法直接链在一起,最后执行runTest()方法即可。默认的runTest()方法是有序比对,而一般mapreduce的输出是无序的,因此可通过传入false参数执行runTest()【即runTest(false)】来执行无序比对。
类似平常写JUnit单元测试一样,上面例子使用了@Test/@Before/@After注记,这需要JUnit 4的支持。在完成代码编写后,就可以Run as JUnit Test来运行了。
更多的功能特性可前往官网了解,目前对基本的输入输出、计数器等功能都有支持。
作者:
wangjingjing
时间:
2013-4-26 19:08
欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/)
Powered by Discuz! X3.2