[HADOOP] MRUnit 예제를 실행하려고 충돌하는 API
HADOOPMRUnit 예제를 실행하려고 충돌하는 API
나는 MRUnit 놀아 봤는데 단어 수 및 단위 테스트를위한 튜토리얼 다음의 단어 수 예를 하둡을 위해 그것을 실행 시도
팬이 있지만, 나는 코드를 실행하기 위해 Eclipse를 사용하고 난 setMapper 기능에 대한 오류가 계속
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mrunit.mapreduce.MapDriver;
import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver;
import org.apache.hadoop.mrunit.mapreduce.ReduceDriver;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.junit.Before;
import org.junit.Test;
public class TestWordCount {
MapReduceDriver<LongWritable, Text, Text, IntWritable, Text, IntWritable> mapReduceDriver;
MapDriver<LongWritable, Text, Text, IntWritable> mapDriver;
ReduceDriver<Text, IntWritable, Text, IntWritable> reduceDriver;
@Before
public void setUp() throws IOException
{
WordCountMapper mapper = new WordCountMapper();
mapDriver = new MapDriver<LongWritable, Text, Text, IntWritable>();
mapDriver.setMapper(mapper); //<--Issue here
WordCountReducer reducer = new WordCountReducer();
reduceDriver = new ReduceDriver<Text, IntWritable, Text, IntWritable>();
reduceDriver.setReducer(reducer);
mapReduceDriver = new MapReduceDriver<LongWritable, Text, Text, IntWritable, Text, IntWritable>();
mapReduceDriver.setMapper(mapper); //<--Issue here
mapReduceDriver.setReducer(reducer);
}
에러 메시지:
java.lang.Error: Unresolved compilation problems:
The method setMapper(Mapper<LongWritable,Text,Text,IntWritable>) in the type MapDriver<LongWritable,Text,Text,IntWritable> is not applicable for the arguments (WordCountMapper)
The method setMapper(Mapper<LongWritable,Text,Text,IntWritable>) in the type MapReduceDriver<LongWritable,Text,Text,IntWritable,Text,IntWritable> is not applicable for the arguments (WordCountMapper)
이 문제를 찾고, 나는 그것이 API 충돌 할 수 있다고 생각하지만 난 그것을 찾아 어디서 모르겠어요. 다른 사람 전에이 문제가?
편집 나는 hadoop2 항아리와 최신 Junit와 거기에 (4.10) 항아리와 사용자 정의 라이브러리를 사용하고 있습니다.
편집 여기에 2 WordCountMapper 코드입니다
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordCountMapper extends Mapper<Object, Text, Text, IntWritable>
{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context)throws IOException, InterruptedException
{
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens())
{
word.set(itr.nextToken());
context.write(word, one);
}
}
}
최종 편집 / IT 작동
내가 설정하는 데 필요한 밝혀
WordCountMapper mapper = new WordCountMapper();
에
Mapper mapper = new WordCountMapper();
이후 제네릭에 문제가 있었다. 또한 내 사용자 정의 라이브러리에 mockito 라이브러리를 가져올 필요가 있었다.
해결법
-
==============================
1.여기에 귀하의 문제입니다
여기에 귀하의 문제입니다
public class WordCountMapper extends Mapper<Object, Text, Text, IntWritable> .... MapDriver<LongWritable, Text, Text, IntWritable> mapDriver;
(Object)를 귀하의 WordCountMapper 입력 유형은 MapDriver 입력 유형 (LongWritable)와 호환되지 않습니다. 당신의 매퍼 정의를 변경
class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>
당신은 아마 또한 LongWritable 키 객체 키에서지도 방법 인수를 변경하고 싶습니다.
-
==============================
2.당신이 가져온 정확한 클래스를 확인, 나는 위의보고 같은 오류 메시지가 직면 잘못된 클래스를 가져오고 reduce_test하지만 인해 두 클래스 감속기의 올바른 매개 변수를 가진 내 위의 프로그램과는 달리 같은 오류가 발생했다 직면
당신이 가져온 정확한 클래스를 확인, 나는 위의보고 같은 오류 메시지가 직면 잘못된 클래스를 가져오고 reduce_test하지만 인해 두 클래스 감속기의 올바른 매개 변수를 가진 내 위의 프로그램과는 달리 같은 오류가 발생했다 직면
잘못 가져 그 수업
수입 org.apache.hadoop.mrunit.ReduceDriver;
올바른 클래스 ---
수입 org.apache.hadoop.mrunit.mapreduce.ReduceDriver;
당신이 확신하는 경우 mapper_test의 경우 동일한 솔루션, 당신의 매개 변수 Mapper__class 및 Mapper_test에서 동일한 지
from https://stackoverflow.com/questions/24084265/conflicting-api-when-trying-to-run-mrunit-example by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 왜 우리는 우리가 컴퓨터를 다시 시작할 때마다 후 HDFS를 포맷해야합니까? (0) | 2019.09.22 |
---|---|
[HADOOP] HTTP를 통해 HDFS에 저장된 비디오에 액세스 (0) | 2019.09.22 |
[HADOOP] matlab에의 액세스 HDFS 데이터 (0) | 2019.09.22 |
[HADOOP] 어떻게 내 하둡 클러스터의 클러스터 ID를 찾는 방법은? (0) | 2019.09.22 |
[HADOOP] 하둡 네임 노드가 시작되지 않습니다 (0) | 2019.09.22 |