gpt4 book ai didi

java - 如何使用MRUnit Test做Mapper测试?

转载 作者:可可西里 更新时间:2023-11-01 14:19:09 25 4
gpt4 key购买 nike

我是 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。下面是我的代码,

我的映射器类:
类名:推荐,

public static class IdIndexMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text>{

public void map(LongWritable key, Text val, OutputCollector<Text, Text> 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<LongWritable, Text, Text, Text> mapDriver;

@Before
public void setUp() throws Exception {
IdIndexMapper mapper=new IdIndexMapper();
mapper.configure(new JobConf());
mapDriver=new MapDriver<LongWritable, Text, Text,Text>();
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.0.0 MapDriver.setMapper()需要一个 org.apache.hadoop.mapred.Mapper。您正在使用较旧的 org.apache.hadoop.mapreduce.Mapper。它们是两种不同的动物。如果你想使用 MRUnit 0.8.x您可以使用旧的 Mapper。你可以获得 0.8.x here


编辑

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

另请注意,有两个不同的 MRUnit。有 hadoop1 和 hadoop2 版本。后者 MapDriver(你需要的)在 hadoop2.你可以获得 download here

关于java - 如何使用MRUnit Test做Mapper测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25262428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com