如何使用MRUnit Test进行Mapper测试?

 蘑菇-2166_315 发布于 2022-12-28 16:57

我是Hadoop的新手.我想使用MRUnit Test单独测试我的映射器部件.我已经尝试了很多.但我不知道如何解决以下错误 -
"MapDriver类型中的方法setMapper(Mapper)不适用于参数(Recommand.IdIndexMapper)".我使用的是Hadoop-1.2.1,Eclipse Juno,mrunit-1.0.0-hadoop1.jar,junit-4.11,mockito-all-1.9.5.jar.贝娄是我的代码,

我的Mapper类:
类名:推荐,

public static class IdIndexMapper extends MapReduceBase implements Mapper{

        public void map(LongWritable key, Text val, OutputCollector output,Reporter reporter)throws IOException{
            String[] ids;
            String ln=val.toString();
            ids=ln.split("\t");
            output.collect(new Text(ids[0]),new Text(ids[1]));
   // System.out.println(ids[0]+" "+ids[1]);

    }

我的测试代码:

package org.apache.hadoop.examples;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;



import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.examples.WordCount.IntSumReducer;
//import org.apache.hadoop.examples.WordCount.TokenizerMapper;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mrunit.mapreduce.MapDriver;
import org.junit.Before;
import org.junit.Test;
import org.myorg.Recommand.IdIndexMapper;

public class RecomTest {
    MapDriver mapDriver;

     @Before
     public void setUp() throws Exception {
         IdIndexMapper mapper=new IdIndexMapper();
         mapper.configure(new JobConf());
        mapDriver=new MapDriver();
        mapDriver.setMapper(mapper);
     }

    @Test
    public void testMapper() throws IOException {

        final LongWritable inputKey = new LongWritable(0);
         final Text inputValue = new Text("M1023    M1024,M1022,M1025");

         final Text outputKey = new Text("M1023");
         final Text outputValue = new Text("M1024,M1022,M1025");

         mapDriver.withInput(inputKey, inputValue);
         mapDriver.withOutput(outputKey, outputValue);
         mapDriver.runTest();



    }

}

我得到的错误是:

MapDriver类型中的方法setMapper(Mapper)不适用于参数(Recommand.IdIndexMapper)

有人可以帮我解决这个问题吗?

1 个回答
  • 1.0.0MapDriver.setMapper()预计a org.apache.hadoop.mapred.Mapper.你正在使用旧的org.apache.hadoop.mapreduce.Mapper.它们是两种不同的动物.如果你想使用MRUnit 0.8.x,你可以使用旧的Mapper.你可以在这里获得0.8.x.


    编辑

    我看到了真正的问题.以上是不正确的.有两个MapDrivers- org.apache.hadoop.mrunit.mapreduce.MapDriver(你正在使用的那个)和org.apache.hadoop.mrunit.MapDriver.你应该使用后者MapDriver

    另请注意,有两种不同的MRUnit.有一个hadoop1和hadoop2版本.后者MapDriver(你需要的那个)在hadoop2中.你可以在这里下载

    2022-12-28 17:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有