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集群,我将在下一篇文章中介绍。

参考: The Pragmatic Integrator博客上的JCG合作伙伴Pascal Alma对Java Hadoop作业进行了单元测试。

翻译自: https://www.javacodegeeks.com/2013/09/unit-testing-a-java-hadoop-job.html

hadoop

hadoop_单元测试Java Hadoop作业相关推荐

  1. java hadoop_单元测试Java Hadoop作业

    java hadoop 在我以前的文章中,我展示了如何设置一个完整的基于Maven的项目,以用Java创建Hadoop作业. 当然并没有完成,因为它缺少单元测试部分. 在这篇文章中,我将展示如何将Ma ...

  2. 单元测试Java Hadoop作业

    在我以前的文章中,我展示了如何设置一个完整的基于Maven的项目,以用Java创建Hadoop作业. 当然并没有完成,因为它缺少单元测试部分. 在本文中,我将展示如何将MapReduce单元测试添加到 ...

  3. aws上部署hadoop_在AWS Elastic MapReduce上运行PageRank Hadoop作业

    aws上部署hadoop 在上一篇文章中,我描述了一个执行PageRank计算的示例,该示例是使用Apache Hadoop进行Mining Massive Dataset课程的一部分. 在那篇文章中 ...

  4. java泰坦宙斯之战程序_详解Hadoop作业平台宙斯Zeus.pdf

    详解Hadoop作业平台宙斯Zeus 杨⻜ 分布式研发⼯程师 开源爱好者 技术顾问 邮箱:yangf_sky@163.com 博客:/yangfei001 微博:/u/1664659850 内容⼤纲 ...

  5. 在AWS Elastic MapReduce上运行PageRank Hadoop作业

    在上一篇文章中,我描述了执行PageRank计算的示例,该示例是使用Apache Hadoop进行Mining Massive Dataset课程的一部分. 在那篇文章中,我接受了Java中现有的Ha ...

  6. java+hadoop配置参数_将Hadoop参数传递给Java代码

    我有一个Uber jar执行一些级联ETL任务. jar的执行方式如下: hadoop jar munge-data.jar 我希望在作业启动时将参数传递给jar,例如 hadoop jar mung ...

  7. Hadoop作业提交分析(三)

    http://www.cnblogs.com/spork/archive/2010/04/12/1710294.html 通过前面两篇文章的分析,对Hadoop的作业提交流程基本明了了,下面我们就可以 ...

  8. Java web对试卷进行单选多选答题进行打分_2020年大学慕课Java程序设计作业答案...

    2020年大学慕课Java程序设计作业答案 更多相关问题 [单选] 单元测试内容不包括().[单选] 在一个列车控制软件的需求文档中,我们发现了以下两条需求描述:"列车车门在两个停靠站之间要 ...

  9. 使用ToolRunner运行Hadoop作业的原理及用法

    使用ToolRunner运行Hadoop作业的原理及用法 @(HADOOP)[hadoop, 大数据] 使用ToolRunner运行Hadoop作业的原理及用法 一示例程序一打印所有参数 1直接运行程 ...

最新文章

  1. Python常用正则表达式总结
  2. 在我的网站上开通了WebPart演示和下载列表。
  3. configurations in Gateway hub system
  4. 一个我们熟悉的陌生人:多丽丝·莱辛
  5. git2.29.2.2怎么安装_MySQL5.5怎么安装
  6. python 类定义 垃圾_什么是python对象摧毁?python中的对象摧毁(垃圾回收)机制是什么?...
  7. 经典排序算法 - 堆排序Heap sort
  8. 怎么将文字转换成语音?
  9. 拜托,面试别再问我计数和桶排序了!!!
  10. python百度文库免券下载
  11. What are FeliCa and PaSoRi?
  12. 求5的阶乘和1-5的阶乘和
  13. 吉珠计算机科学 2a,2B院校 ∣ 让数据告诉你,考上插本难不难?
  14. SystemUI之通知图标控制
  15. 不错的U3D第一人称射击类游戏教程
  16. 火力全开,重新定义蓝牙耳机!新一代南卡OE Pro不入耳式蓝牙耳机震撼来袭
  17. 微信公众号微信小程序申请出现的问题
  18. 删除后缀Phobos勒索病毒 还原Phobos勒索病毒感染的计算机
  19. ArcEngine 鹰眼功能C#实现
  20. 苹果Mac Mini SD读卡器支持2TB内存卡

热门文章

  1. Node Opencv Addon
  2. zabbix监控利用Python脚本发邮件
  3. Win7旗舰版中的IIS配置asp.net的运行环境
  4. Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园
  5. Monitorix下个版本可能支持postgresql
  6. 存储虚拟化之带内设备与基于存储控制器的虚拟化
  7. QQ 邮箱的换肤 bug
  8. python文档生成工具 sphinx 简介
  9. linux snap 进程cpu占用100% 解决
  10. python 代理使用方法简介