MapReduce单元测试-mrunit

        最近项目需要用到MapReduce进行一个需求开发,对于一个初学者来说,任何入门的知识都可以通过www.baidu.com获取。但是,百度并不能够帮我们百分百的理解原理性的东西,因为任何一个框架、插件、源代码,并不仅仅是System.out.print("Hello World !");这么简单。

         通过mrunit,可以帮助我们做mapreduce的单元测试,验证程序以及代码逻辑,what`s more,还对我们理解mapreduce有很大的帮助。

        首先,我是在https://my.oschina.net/cloudcoder/blog/285151初步了解MapReduceDriver的使用,了解完之后,再来说说我在使用mrunit的一点心得。

         在我的MapReduce程序中,需要做全局数据共享,可了解DistributedCache,在新的hadoop版本中,已经集成到job里,直接调用addCacheFile即可实现文件共享(文件在hdfs上面);而全局变量共享,通过 Configuration  的set函数即可实现。

         对于mrunit,回调用到mapper.class的set跟map函数,所以MapReduceDriver也要将共享文件通过addCacheFile传到mapper.class的set函数中。代码如下:

        

        MapReduceDriver<LongWritable, Text, Text, Text, Text, Text> mapReduceDriver = MapReduceDriver.newMapReduceDriver(new Mapper(), new Reducer());

            Configuration conf = new Configuration();
            conf.set("args[0]", "1");

            // 必须先setConfiguration,再addCacheFile
            mapReduceDriver.setConfiguration(conf);
            mapReduceDriver.addCacheFile("sample.txt");前期工作准备好之后,就可以对map的输入输出进行单元测试。

         输入可以通过MapReduceDriver的withInput函数实现。

         输出的预期结果可以通过MapReduceDriver的withOutput函数实现。

         最后,要调用MapReduceDriver的runTest运行。示例代码如下:

        mapReduceDriver.withInput(new LongWritable(),
                new Text("benjarmin,jack,benjarmin"));

        mapReduceDriver.withOutput(new Text("benjarmin"),new Text("2"));
        mapReduceDriver.withOutput(new Text("jack"),new Text("1"));

        mapReduceDriver.runTest();

转载于:https://my.oschina.net/u/3272146/blog/888634

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值