java hadoop_单元测试Java Hadoop作业

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”,我们可以运行测试:

屏幕截图-2013-08-23-at-20-12-50

有了单元测试,我会说我们已经准备好构建项目并将其部署到Hadoop集群,我将在下一篇文章中介绍。

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

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

java hadoop

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办

Navicat连接oracle数据库时连接失败&#xff0c;出现ORA-28547错误。原因&#xff1a;navicat Primium版本的OCi和本地数据库的OCI版本不一致。解决方法&#xff1a;1、把navicat Primium版本自带oci.dll替换本地Oracle安装路径里的oci.dll。我的本地navicat Primium版本自带oc…

Java集合(5)--Set接口及其实现类HashSet、LinkedHashSet和TreeSet

文章目录Set接口概述HashSet实现类LinkedHashSet实现类TreeSet实现类Set接口概述 1、Set接口是Collection的子接口&#xff0c;set接口没有定义额外的方法&#xff0c;使用的都是Collection接口中的方法。 2、Set 集合不允许包含相同的元素&#xff0c;如果试把两个相同的元素…

Java集合(6)--Map接口

文章目录Map接口概述Map结构的理解Map接口常用方法Map接口概述 Map与Collection并列存在&#xff0c;用于保存具有映射关系的数据:key-value Map中的 key 和 value 都可以是任何引用类型的数据 常用String类作为Map的“键”。key 和 value 之间存在单向一对一关系&#xff0…

Java集合(7)--Map接口的实现类HashMap、LinkHashMap、TreeMap和Properties

文章目录HashMap类LinkedHashMap类TreeMap类Hashtable类Properties类HashMap类 1、HashMap类概述 HashMap是 Map 接口使用频率最高的实现类&#xff0c;允许使用null键和null值&#xff0c;与HashSet一样&#xff0c;不保证映射的顺序。 所有的key构成的集合是Set&#xff1a…

为什么SpringBoot如此受欢迎,以及如何有效地学习SpringBoot?

SpringBoot是最流行和使用最广泛的Java框架。 有时这种讨论“为什么SpringBoot如此受欢迎&#xff1f;” 来我和我的朋友/同事之间。 另外&#xff0c;我确实收到了许多人发来的电子邮件&#xff0c;询问“春天很大&#xff0c;如何快速学习&#xff1f;” 。 在这篇文章中&…

Java实现复数Complex的加减乘除运算、取模、求幅角角度

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; /*** Author: Yeman* Date: 2021-09-23-9:03* Description:*/…

Java集合(8)--集合工具类Collections

Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作&#xff0c;还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。 排序操作 reverse(List)&#xff1a;反转 List 中元素的顺…

Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用

文章目录泛型的概念集合中使用泛型自定义泛型结构泛型在继承上的体现通配符的使用泛型的概念 集合容器类在设计阶段/声明阶段不能确定这个容器实际存的是什么类型的对象&#xff0c;所以在JDK1.5之前只能把元素类型设计为Object&#xff0c;JDK1.5之后使用泛型来解决。因为这个…

蚂蚁组件 axure 蚂蚁_蚂蚁属性细微差别

蚂蚁组件 axure 蚂蚁每隔一段时间&#xff0c;我会想起Ant属性的一些细微差别 &#xff0c;一旦忘记它们&#xff0c;在与Ant交互时会引起混乱。 特别是&#xff0c; Ant属性 通常是不可变的 &#xff08;不包括Ant 1.8以来的局部属性 &#xff09;&#xff0c;并且在其第一次设…

Http基本身份验证在Spring Security中如何工作?

在上一篇文章中&#xff0c;您学习了如何在基于Spring安全性的Java应用程序中启用Http基本身份验证 &#xff0c;现在&#xff0c;我们将进一步进一步了解http基本身份验证在Spring安全性中的工作原理。 如果您还记得的话&#xff0c;当您使用HTTP Basic进行身份验证时&#xf…

JavaIO流(2)--IO流原理、流的分类及节点流文件流操作

文章目录IO流简介IO流原理流的分类IO 流体系节点流和处理流节点流操作IO流简介 I/O是Input/Output的缩写&#xff0c; I/O技术是非常实用的技术&#xff0c;用于处理设备之间的数据传输。如读/写文件&#xff0c;网络通讯等。 Java程序中&#xff0c;对于数据的输入/输出操作…

linux权限体系有哪些角色,详解Linux下系统权限

一、权限概述1. 什么是权限权限&#xff1a;在计算机系统中&#xff0c;权限是指某个计算机用户具有使用软件资源的权利。软件资源&#xff1a;Linux系统中&#xff0c;一切皆文件&#xff01;SO&#xff0c;这里的软件资源就是文件资源。所以&#xff0c;我们今天所讲的权限&a…

让你的数据和对象有源有出路,一文打尽,Java常用IO流处理流(处理字节流文件流)缓冲流、转换流、对象流等

文章目录缓冲流转换流标准输入输出流打印流数据流对象流随机存取文件流Java NIO缓冲流 为了提高数据读写的速度&#xff0c;Java API提供了带缓冲功能的流类&#xff0c;在使用这些流类时&#xff0c;会创建一个内部缓冲区数组&#xff0c;缺省使用8192个字节(8Kb)的缓冲区。 …

linux网卡e1000下载,Linux E1000网卡驱动分析

本分析主要针对e1000网卡,驱动源码为7.3.20-k2。本文的目的不是为了讲述如何编写驱动程序,主要是分析网卡驱动内部的实现机制。Linux-千兆网卡驱动实现机制浅析作者: Minit, 出处:博客, 责任编辑: 罗丽艳,2009-03-29 00:001.引言本分析主要针对e1000网卡&#xff0c;驱动源码为…

迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等

文章目录网络编程概述网络通信要素要素一IP和端口号要素二网络协议TCP网络编程UDP网络编程URL网络编程Java网络编程基础网络编程概述 Java是Internet上的语言&#xff0c;它从语言级上提供了对网络应用程序的支持&#xff0c;程序员能够很容易开发常见的网络应用程序。 Java提…

Linux脚本双引号字符去除,shell命令去除字符串里双引号

echo \"refs/changes/84/727284/1\" | sed s/\"//gshell变量内字符替换和变量字符修改a12345123#将${a}里的第一个123替换为321b${a/123/321};echo "echo variable a"echo $aecho "echo variable b"echo $ba12345123#将${a}里的所有123替换…

12000+字Java反射,一起全面了解Java反射机制,为学习框架铺路

文章目录Java反射机制理解Class类获取Class类实例类的加载过程类加载器ClassLoader创建运行时类的对象获取运行时类的结构调用运行时类的指定结构动态代理Java反射机制 Reflection是被视为动态语言的关键&#xff0c;反射机制允许程序在执行期借助于Reflection API取得任何类的…

linux 中 id指令,Linux id 命令

要登入一台计算机&#xff0c;我们需要一个用户名。用户名是一个可以被计算机识别的身份。基于此&#xff0c;计算机会对使用这个用户名的登陆的人应用一系列的规则。在Linux系统下&#xff0c;我们可以使用 id 命令。什么是 id 命令id 命令可以显示真实有效的用户 ID(UID) 和组…

提高Java表达能力!不落伍一起掌握Java8中Lambda表达式、函数式接口及方法构造器数组引用

文章目录函数式接口概述函数式接口示例内置函数式接口Lambda简述Lambda语法方法引用构造器引用数组引用函数式接口概述 只包含一个抽象方法的接口&#xff0c;称为函数式接口。 可以通过 Lambda 表达式来创建该接口的对象。 可以在一个接口上使用 FunctionalInterface 注解&…

一文一起,学习功能强大的Java8新StreamAPI,让集合的操作得心应手

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 文章目录Stream 概述Stream 实例化Stream 中间操作Stream 终止…