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

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

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

java hadoop

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

  1. hadoop_单元测试Java Hadoop作业

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

  2. 通过java api提交自定义hadoop 作业

    通过API操作之前要先了解几个基本知识 一.hadoop的基本数据类型和java的基本数据类型是不一样的,但是都存在对应的关系 如下图 如果需要定义自己的数据类型,则必须实现Writable hado ...

  3. 作业优先调度java代码_如何在触发它时在java代码中为hadoop作业设置优先级?

    这是我的工作人员的外表.如何在触发这项工作时设定低优先级? public int run(String[] args) throws Exception { this.initJob(); Path ...

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

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

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

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

  6. 单元测试Java Hadoop作业

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

  7. java.library.path hadoop_关于java:Hadoop“无法为您的平台加载本机Hadoop库”警告

    我目前正在运行CentO的服务器上配置hadoop. 当我运行start-dfs.sh或stop-dfs.sh时,出现以下错误: WARN util.NativeCodeLoader: Unable ...

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

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

  9. 东华大学java_东华大学2020秋《Java程序设计》期末大作业

    东华大学继续教育学院 2020年秋季学期 远程学历教育<Java程序设计>期末大作业 一.选择题(本大题共10小题,每小题 1分, 共10分) 1.    下列哪个不是面向对象程序设计的基 ...

最新文章

  1. 关于学习Python的一点学习总结(2->列表)
  2. 项目——迁移/home分区
  3. 怎样取消连续包月自动续费_苹果手机连续包月会员怎么取消 设置iPhone解除应用自动续费...
  4. 安卓手机刷软路由_华为路由AX3 Pro上手测评:用过最方便的路由器,没有之一...
  5. 信息学奥赛C++语言:切蛋糕
  6. oracle until freed,ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法...
  7. fg jobs bg
  8. Git:clean的用法
  9. 简洁优雅的.net代码赏析
  10. c语言二级题库pdf,C语言二级考试题库.pdf
  11. Jtopo对象属性大全
  12. 达梦数据库update关联更新改造
  13. msdos gpt
  14. 无线模块数据加密,反码校验,发送字符串ABCDEFGHIJKLMNOP LED频闪
  15. 面向初学者的 MQL4 语言系列之4——自定义指标
  16. 零基础通过直播小程序组件实现电商带货
  17. 常见的百度云搜索引擎入口合集
  18. Linux: 硬件时钟, 系统时钟, 网络时钟, 时区修改和同步
  19. allegro制作通孔焊盘封装-flash热风焊盘-图文并茂的Allegro 通孔焊盘制作教程
  20. 艾伟_转载:一个.NET委托的故事:彼得,老板和宇宙

热门文章

  1. SpringBoot2.1.9 多数据源Mybatis—JDBC配置
  2. JavaFX官方教程(九)之转换
  3. 如何在MyEclipse中显示行数
  4. 春节跳槽最新Java面试题
  5. python3如何连接mysql数据库
  6. 要么干,要么滚,千万别混
  7. 项目的包结构 mybatis三剑客
  8. 华为荣耀20计算机,华为云电脑将停止服务/荣耀新机保护壳曝光/小米新机渲染图曝光...
  9. NanoHTTPD web server的一个简单荔枝
  10. apache.camel_Apache Camel K 1.0在这里–您为什么要关心