最近在学习Marcello de Sales的TF-IDF示例的时候,需要用到MRUnit来对Map、Reduce、MapReduce做测试,
网上找了一个极其简单的教程:
介绍:
MRUnit是一款由Couldera公司开发的专门针对Hadoop中编写MapReduce单元测试的框架。
它可以用于0.18.x版本中的经典org.apache.hadoop.mapred.*的模型,也能在0.20.x版本org.apache.hadoop.mapreduce.*的新模型中使用。
安装:
在目前Hadoop的发行版中,并没有默认包含MRUnit。你需要去Couldera公司的官网中去下载一个由他们再次发行的版本。
推荐的版本为:hadoop-0.20.1+133.tar.gz 。
下载这个文件后,你将在hadoop-0.20.1+133/contrib/mrunit目录中找到我们需要的jar包:hadoop-0.20.1+133-mrunit.jar。
为了使用MRUnit,我们需要将hadoop-0.20.1+133-mrunit.jar和Junit4.x使用的jar包:junit.jar都添加到我们开发Hadoop程序项目的classpath中。
示例:
package gpcuster.cnblogs.com; import junit.framework.TestCase; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.Mapper; import org.apache.hadoop.mapred.lib.IdentityMapper; import org.junit.Before; import org.junit.Test; import org.apache.hadoop.mrunit.MapDriver; public class TestExample extends TestCase { private Mapper<Text, Text, Text, Text> mapper; private MapDriver<Text, Text, Text, Text> driver; @Before public void setUp() { mapper = new IdentityMapper<Text, Text>(); driver = new MapDriver<Text, Text, Text, Text>(mapper); } @Test public void testIdentityMapper() { driver.withInput(new Text("foo"), new Text("bar")) .withOutput(new Text("foo"), new Text("bar")) .runTest(); } }
参考材料:
博客园 逖靖寒 http://gpcuster.cnblogs.com