在Hadoop中使用MRUnit进行单元测试

发表于:2013-9-09 11:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:逖靖寒    来源:51Testing软件测试网采编

分享:

  在这段示例代码中,我们使用的map是org.apache.hadoop.mapred.lib.IdentityMapper。这是一个非常简单的map函数:输入什么,就输出什么。

  org.apache.hadoop.mrunit.MapDriver是我们从MRUnit框架中导入的一个专门用于测试map的类。

  我们通过withInput指定输入的参数,通过withOutput指定我们期望的输出,然后通过runTest运行我们的测试。

  功能

  1. 测试Map,我们可以使用MapDriver。

  2. 测试Reduce,我们可以使用ReduceDriver。

  3. 测试一个完整的MapReduce,我们可以使用MapReduceDriver。

  4. 测试多个MapReduce组合而成的操作,我们可以使用PipelineMapReduceDriver。

  实现

  MRUnit框架非常精简,其核心的单元测试依赖于JUnit。

  由于我们编写的MapReduce函数中包含有一个OutputCollector的对象,所以MRUnit自己实现了一套Mock对象来控制OutputCollector的操作。

  局限

  通过阅读MRUnit的源代码我们会发现:

  1. 不支持MapReduce框架中的分区和排序操作:从Map输出的值经过shuffle处理后直接就导入Reduce中了。

  2. 不支持Streaming实现的MapReduce操作。

  虽然MRUnit有这些局限,但是足以完成大多数的需求。

22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号