设计网站首页,全返网站建设,同程网 网站模板,注册公司名称大全免费java hadoop在我以前的文章中#xff0c;我展示了如何设置一个完整的基于Maven的项目#xff0c;以用Java创建Hadoop作业。 当然并没有完成#xff0c;因为它缺少单元测试部分。 在这篇文章中#xff0c;我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单… java hadoop 在我以前的文章中我展示了如何设置一个完整的基于Maven的项目以用Java创建Hadoop作业。 当然并没有完成因为它缺少单元测试部分。 在这篇文章中我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单元测试我使用MRUnit框架 。 向pom添加必要的依赖项 将以下依赖项添加到pom dependencygroupIdorg.apache.mrunit/groupIdartifactIdmrunit/artifactIdversion1.0.0/versionclassifierhadoop1/classifierscopetest/scope
/dependency 这将使MRunit框架可用于该项目。 添加单元测试以测试Map Reduce逻辑 该框架的使用非常简单尤其是在我们的业务案例中。 因此如果需要的话我将仅显示单元测试代码和一些注释但是我认为使用它非常明显。 映射程序“ MapperTest”的单元测试 package net.pascalalma.hadoop;import org.apache.hadoop.io.Text;
import org.apache.hadoop.mrunit.mapreduce.MapDriver;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;/*** Created with IntelliJ IDEA.* User: pascal*/
public class MapperTest {MapDriverText, Text, Text, Text mapDriver;Beforepublic void setUp() {WordMapper mapper new WordMapper();mapDriver MapDriver.newMapDriver(mapper);}Testpublic void testMapper() throws IOException {mapDriver.withInput(new Text(a), new Text(ein));mapDriver.withInput(new Text(a), new Text(zwei));mapDriver.withInput(new Text(c), new Text(drei));mapDriver.withOutput(new Text(a), new Text(ein));mapDriver.withOutput(new Text(a), new Text(zwei));mapDriver.withOutput(new Text(c), new Text(drei));mapDriver.runTest();}
} 这个测试类实际上比Mapper实现本身还要简单。 您只需定义映射器的输入和预期的输出然后让配置的MapDriver运行测试。 在我们的例子中Mapper没有做任何特定的事情但是您会看到设置一个测试用例很容易。 为了完整起见这里是Reducer的测试类 package net.pascalalma.hadoop;import org.apache.hadoop.io.Text;
import org.apache.hadoop.mrunit.mapreduce.ReduceDriver;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;/*** Created with IntelliJ IDEA.* User: pascal*/
public class ReducerTest {ReduceDriverText, Text, Text, Text reduceDriver;Beforepublic void setUp() {AllTranslationsReducer reducer new AllTranslationsReducer();reduceDriver ReduceDriver.newReduceDriver(reducer);}Testpublic void testReducer() throws IOException {ListText values new ArrayListText();values.add(new Text(ein));values.add(new Text(zwei));reduceDriver.withInput(new Text(a), values);reduceDriver.withOutput(new Text(a), new Text(|ein|zwei));reduceDriver.runTest();}
} 运行单元测试 使用Maven命令“ mvn clean test”我们可以运行测试 有了单元测试我会说我们已经准备好构建项目并将其部署到Hadoop集群我将在下一篇文章中介绍。 参考 The Pragmatic Integrator博客上的JCG合作伙伴 Pascal Alma 对Java Hadoop作业进行了单元测试 。 翻译自: https://www.javacodegeeks.com/2013/09/unit-testing-a-java-hadoop-job.htmljava hadoop