单元测试Java Hadoop作业
在我以前的文章中,我展示了如何设置一个完整的基于Maven的项目,以用Java创建Hadoop作业。 当然并没有完成,因为它缺少单元测试部分。 在本文中,我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单元测试,我使用MRUnit框架 。
- 将必要的依赖项添加到pom
将以下依赖项添加到pom:
<dependency><groupId>org.apache.mrunit</groupId><artifactId>mrunit</artifactId><version>1.0.0</version><classifier>hadoop1</classifier><scope>test</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 {MapDriver<Text, 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 {ReduceDriver<Text, Text, Text, Text> reduceDriver;@Beforepublic void setUp() {AllTranslationsReducer reducer = new AllTranslationsReducer();reduceDriver = ReduceDriver.newReduceDriver(reducer);}@Testpublic void testReducer() throws IOException {List<Text> values = new ArrayList<Text>();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集群,我将在下一篇文章中进行描述。
翻译自: https://www.javacodegeeks.com/2013/09/unit-testing-a-java-hadoop-job.html
单元测试Java Hadoop作业相关推荐
- hadoop_单元测试Java Hadoop作业
hadoop 在我以前的文章中,我展示了如何设置一个完整的基于Maven的项目,以用Java创建Hadoop作业. 当然并没有完成,因为它缺少单元测试部分. 在这篇文章中,我将展示如何将MapRedu ...
- java hadoop_单元测试Java Hadoop作业
java hadoop 在我以前的文章中,我展示了如何设置一个完整的基于Maven的项目,以用Java创建Hadoop作业. 当然并没有完成,因为它缺少单元测试部分. 在这篇文章中,我将展示如何将Ma ...
- java泰坦宙斯之战程序_详解Hadoop作业平台宙斯Zeus.pdf
详解Hadoop作业平台宙斯Zeus 杨⻜ 分布式研发⼯程师 开源爱好者 技术顾问 邮箱:yangf_sky@163.com 博客:/yangfei001 微博:/u/1664659850 内容⼤纲 ...
- aws上部署hadoop_在AWS Elastic MapReduce上运行PageRank Hadoop作业
aws上部署hadoop 在上一篇文章中,我描述了一个执行PageRank计算的示例,该示例是使用Apache Hadoop进行Mining Massive Dataset课程的一部分. 在那篇文章中 ...
- 在AWS Elastic MapReduce上运行PageRank Hadoop作业
在上一篇文章中,我描述了执行PageRank计算的示例,该示例是使用Apache Hadoop进行Mining Massive Dataset课程的一部分. 在那篇文章中,我接受了Java中现有的Ha ...
- java+hadoop配置参数_将Hadoop参数传递给Java代码
我有一个Uber jar执行一些级联ETL任务. jar的执行方式如下: hadoop jar munge-data.jar 我希望在作业启动时将参数传递给jar,例如 hadoop jar mung ...
- Hadoop作业提交分析(三)
http://www.cnblogs.com/spork/archive/2010/04/12/1710294.html 通过前面两篇文章的分析,对Hadoop的作业提交流程基本明了了,下面我们就可以 ...
- Java web对试卷进行单选多选答题进行打分_2020年大学慕课Java程序设计作业答案...
2020年大学慕课Java程序设计作业答案 更多相关问题 [单选] 单元测试内容不包括().[单选] 在一个列车控制软件的需求文档中,我们发现了以下两条需求描述:"列车车门在两个停靠站之间要 ...
- 使用ToolRunner运行Hadoop作业的原理及用法
使用ToolRunner运行Hadoop作业的原理及用法 @(HADOOP)[hadoop, 大数据] 使用ToolRunner运行Hadoop作业的原理及用法 一示例程序一打印所有参数 1直接运行程 ...
最新文章
- 怎样熟练使用一项技术
- linux每日命令(31):tar命令
- halcon python 联合开发_使用pythonnet调用halcon脚本
- How Do Annotations Work in Java?--转
- C语言 - sizeof和strlen的区别
- 用递归方法计算斐波那契数列(Recursion Fibonacci Sequence Python)
- elasticsearch5.0启动出现的错误(自己做过测试,有错误可以在这上面找)
- Linux--结构体的详细学习
- Python模块:time模块详解(转)
- 【渝粤题库】广东开放大学 商务交际听说 形成性考核
- PHP内核通用网站后台权限管理系统源码
- [UE4]OnComponentBeginOverlap.AddDynamic 的编译错误
- 有序表的索引顺序结构查找次数分析
- sql2000海量存储过程(1500w数据,分页只需1秒)
- 爬虫爬取车主指南各类汽车数据
- 各区区号的字段和名称
- MSOCache文件夹能否删除
- 【Python】Time模块 ValueError: unconverted data remains: UnicodeEncodeError:
- oracle20c最新版本,Oracle DUL支持Oracle 20c
- 北京建行个人信贷客户资信调查函.doc
热门文章
- python爬新闻并保存csv_用python爬取内容怎么存入 csv 文件中
- ISO语言代码和国家代码+Locale常量+ISO货币符号
- 存储过程内基础语法---补充while循环
- lambda表达式java_Lambda表达式Java教程
- 缓冲池java_了解Java缓冲池
- jsf 项目_您将在下一个项目中使用JSF吗?
- tomee_微服务系列:MicroProfile和Apache TomEE
- aws sqs_在Spring中将AWS SQS用作JMS提供程序
- android 揭示动画_揭示垃圾收集暂停的时间长度
- JDK 13中的JEP 355文本块