当前位置: 首页 > news >正文

阿城区建设小学网站上海建设行政主管部门政务网站

阿城区建设小学网站,上海建设行政主管部门政务网站,js特效如何放到网站上,做网站怎么开发程序mrunit这篇文章将略微绕开使用MapReduce实现数据密集型处理中发现的模式#xff0c;以讨论同样重要的测试。 汤姆•惠勒 #xff08; Tom Wheeler#xff09;在纽约2012年Strata / Hadoop World会议上参加的一次演讲给了我部分启发。 当处理大型数据集时#xff0c;想到的并… mrunit 这篇文章将略微绕开使用MapReduce实现数据密集型处理中发现的模式以讨论同样重要的测试。 汤姆•惠勒 Tom Wheeler在纽约2012年Strata / Hadoop World会议上参加的一次演讲给了我部分启发。 当处理大型数据集时想到的并不是单元测试。 但是当考虑到无论集群有多大或有多少数据时都将相同的代码推送到所有节点以运行MapReduce作业因此Hadoop映射器和化简器非常适合进行单元测试。 但是对框架进行Hadoop的单元测试并不容易。 幸运的是有一个使Hadoop测试相当容易的库– MRUnit 。 MRUnit基于JUnit并允许对映射器化简器进行单元测试以及对映射器进行一些有限的集成测试-归化器与组合器自定义计数器和分区器之间的交互。 在撰写本文时我们正在使用最新版本的MRUnit 0.9.0。 所有测试的代码均来自上一则有关使用本地聚合计算平均值的文章 。 建立 要开始使用请从此处下载MRUnit。 解压缩tar文件后将cd插入mrunit-0.9.0-incubating / lib目录。 在其中您应该看到以下内容 mrunit-0.9.0-incubating-hadoop1.jar mrunit-0.9.0-incubating-hadoop2.jar 我敢肯定mrunit-0.9.0-incubating-hadoop1.jar用于Hadoop的MapReduce版本1mrunit-0.9.0-incubating-hadoop2.jar用于处理Hadoop的新版本的MapReduce。 对于本文以及其他所有后续文章我们将使用Cloudera CDH4.1.1发行版中的hadoop-2.0版本因此我们需要mrunit-0.9.0-incubating-hadoop2.jar文件。 我在Intellij中将MRUnitJUnit和Mockito添加为库JUnit和Mockito与MRUnit jar文件位于同一目录中。 现在我们已经建立了依赖关系让我们开始测试。 测试映射器 设置测试映射器非常简单最好先查看一些代码来说明。 我们将使用上一篇文章中的映射器内合并示例 Test public void testCombiningMapper() throws Exception {new MapDriverLongWritable,Text,Text,TemperatureAveragingPair().withMapper(new AverageTemperatureCombiningMapper()).withInput(new LongWritable(4),new Text(temps[3])).withOutput(new Text(190101),new TemperatureAveragingPair(-61,1)).runTest();} 注意流利的api样式这增加了创建测试的难度。 要编写测试您将 实例化完全与被测映射器参数化的MapDriver类的实例。 在withMapper调用中添加要测试的Mapper实例。 在withInput调用中输入您的键和输入值在这种情况下一个LongWritable具有任意值和一个Text对象其中包含来自NCDC天气数据集的行该数据集包含在名为“ temps”的字符串数组中该数组早先在2000年建立。测试此处不会显示因为它会脱离演示文稿。 在withOutput调用中指定期望的输出在这里我们期望一个Text对象的值为“ 190101”一个TemperatureAveragingPair对象的值为-61温度和1计数。 最后一个调用runTest将指定的输入值输入到映射器中并将实际输出与“ withOutput”方法中设置的预期输出进行比较。 需要注意的一件事是MapDriver每次测试仅允许一个输入和输出。 您可以根据需要多次调用withInput和withOutput但是MapDriver会用新值覆盖现有值因此您将只能在任何时间使用一个输入/输出进行测试。 要指定多个输入我们将使用MapReduceDriver稍后将介绍几节但接下来将测试化简器。 测试减速器 测试减速器遵循与映射器测试相同的模式。 再次让我们开始看一个代码示例 Test public void testReducerCold(){ListTemperatureAveragingPair pairList new ArrayListTemperatureAveragingPair();pairList.add(new TemperatureAveragingPair(-78,1));pairList.add(new TemperatureAveragingPair(-84,1));pairList.add(new TemperatureAveragingPair(-28,1));pairList.add(new TemperatureAveragingPair(-56,1));new ReduceDriverText,TemperatureAveragingPair,Text,IntWritable().withReducer(new AverageTemperatureReducer()).withInput(new Text(190101), pairList).withOutput(new Text(190101),new IntWritable(-61)).runTest();} 该测试首先创建一个TemperatureAveragingPair对象列表以用作减速器的输入。 实例化了ReducerDriver并且与MapperDriver一样对它的参数设置也与被测试的reducer完全一样。 接下来我们传递要在withReducer调用中测试的reducer实例。 在withInput调用中我们传入键“ 190101”和在测试开始时创建的pairList对象。 接下来我们指定我们期望减速器发出的输出相同的键“ 190101”和一个IntWritable它表示列表中的温度平均值。 最终调用runTest它将为我们的减速器提供指定的输入并将减速器的输出与期望输出进行比较。 ReducerDriver具有与MapperDriver相同的限制即不接受多个输入/输出对。 到目前为止我们已经单独测试了Mapper和Reducer但我们也想在集成测试中一起测试它们。 可以通过使用MapReduceDriver类来完成集成测试。 MapReduceDriver还是用于测试组合器自定义计数器或自定义分区程序使用情况的类。 整合测试 为了测试您的mapper和reducer一起工作MRUnit提供了MapReduceDriver类。 如您现在所期望的MapReduceDriver类有两个主要区别。 首先参数化映射器的输入和输出类型以及化简器的输入和输出类型。 由于映射器输出类型需要与化简器输入类型匹配因此最终需要3对参数化类型。 其次您可以提供多个输入并指定多个预期输出。 这是我们的示例代码 Test public void testMapReduce(){new MapReduceDriverLongWritable,Text,Text,TemperatureAveragingPair,Text,IntWritable().withMapper(new AverageTemperatureMapper()).withInput(new LongWritable(1),new Text(temps[0])).withInput(new LongWritable(2),new Text(temps[1])).withInput(new LongWritable(3),new Text(temps[2])).withInput(new LongWritable(4),new Text(temps[3])).withInput(new LongWritable(5),new Text(temps[6])).withInput(new LongWritable(6),new Text(temps[7])).withInput(new LongWritable(7),new Text(temps[8])).withInput(new LongWritable(8),new Text(temps[9])).withCombiner(new AverageTemperatureCombiner()).withReducer(new AverageTemperatureReducer()).withOutput(new Text(190101),new IntWritable(-22)).withOutput(new Text(190102),new IntWritable(-40)).runTest();} 从上面的示例中可以看到设置与MapDriver和ReduceDriver类相同。 您传入映射器reducer和可选组合器的实例进行测试。 MapReduceDriver允许我们传递具有不同键的多个输入。 此处的“临时”数组与在映射器示例中引用的数组相同并包含来自NCDC天气数据集的几行而这些示例行中的键是1901年1月和2月的月份分别表示为“ 190101”和“ 190102“。 该测试是成功的因此我们对映射器和化简器一起工作的正确性有了更多的信心。 结论 希望我们已经证明了MRUnit对于测试Hadoop程序有多么有用。 我想用我自己的一些观点来总结这篇文章。 尽管MRUnit使映射器和化简器代码的单元测试变得容易但是这里介绍的映射器和化简器示例相当简单。 如果您的映射和/或精简代码开始变得更加复杂则最好将代码与Hadoop框架解耦然后单独测试新类。 另外与MapReduceDriver类一样它对于集成测试非常有用很容易达到不再测试代码而已经测试Hadoop框架本身的地步。 我提出了自己打算继续使用的测试策略 单元测试映射/减少代码。 可能使用MapReduceDriver类编写一个集成测试。 作为一个健全性检查请在单节点安装在我的笔记本电脑上上运行MapReduce作业以确保其在Hadoop框架上运行。 然后在我的案例中使用Apache Whirr在EC2的测试集群上运行我的代码。 讨论如何在笔记本电脑OSX Lion上设置单节点安装以及如何使用Whirr在EC2上建立群集将使这篇文章过长因此我将在下一篇文章中介绍这些主题。 谢谢你的时间。 资源资源 Jimmy Lin和Chris Dyer 使用MapReduce进行的数据密集型处理 Hadoop Tom White 的权威指南 来自博客的源代码 Hadoop API MRUnit用于单元测试Apache Hadoop映射减少工作 Gutenberg项目提供了大量纯文本格式的书籍非常适合在本地测试Hadoop作业。 参考 《 随机编码》博客上的JCG合作伙伴 Bill Bejeck的《 使用MRUnit测试Hadoop程序》 。 翻译自: https://www.javacodegeeks.com/2012/11/testing-hadoop-programs-with-mrunit.htmlmrunit
http://www.zqtcl.cn/news/333437/

相关文章:

  • 西丽网站建设网站怎样做才能有点击率
  • 网站建设图片大小建设部网站1667号公告
  • 做wps的网站赚钱网站建设中网站图片如何修改
  • 公司招商型网站建设怎么自己做网站挣钱
  • 红酒手机网站建设中视频自媒体注册
  • 免费网站2022年能用的网址青阳网站建设
  • 网站建设的开发方式知乎科技部网站建设合同范本
  • 兰州市建设厅官方网站做酒店的网站
  • 宠物店网站开发文档撰写洛阳市河阳建设工程有限公司网站
  • 毕业设计做网站应该学什么wordpress调用子分类
  • 怎么建网站做淘宝客用国外网站 图片做自媒体
  • 汕头建站模板搭建怎么制作有效网站
  • 学生个人网站作品怎么wordpress用的什么主题
  • 设计logo网站侵权吗知乎一键做单页网站
  • 网站服务器有什么用做视频网站视频存放问题
  • 影评网站建设可以免费发布招聘网站
  • 富阳做兼职的网站正邦设计上海分公司
  • 网站漏洞解决办法投资
  • wordpress网站如何网页设计实训总结3000字大学篇
  • 用ps怎么做网站导航条wordpress 开启缩略图
  • 网上销售型的企业网站为什么要域名备案
  • 唐山网站建设方案优化国内酷炫网站
  • 国外网站备案吗网站做一样没有侵权吧
  • 谷歌怎么建网站ps中怎样做网站轮播图片
  • 汕头有没有做网站廊坊宣传片制作公司
  • 百度快速收录网站有些人做网站不用钱的 对吗
  • 如何规划一个网站网站建设预付费入什么科目
  • 北京做网站的好公司有哪些网站建设杭州缘择低价
  • 建设网站团队张掖响应式建站平台
  • 中国建设之乡是哪里网站优化连云港哪家强?