在Hadoop中使用MRUnit进行单元测试

最近在学习Marcello de SalesTF-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

猜你喜欢

转载自irwenqiang.iteye.com/blog/1504029