2012-05-29 3 views
3

스칼라에서 Hbase의 mapreduce 작업을 작성하는 중에 이상한 문제에 직면했습니다. 문제는 내 스칼라 클래스는 ScalaMapReducer가이 다음 클래스 http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapper.html스칼라 '무시할 항목 없음'오류

을 확장 가지고 말할 수 있다는 것입니다하지만 난 그렇게하고 '재정의'지도 방법 (TableMapper의 상속 형태의 슈퍼 클래스 매퍼) 때, 스칼라 오류 '지도 재정의와 불평 아무것도 '컴파일하지 못하는 동안 나는 자바에서 아무런 문제없이 그렇게 할 수있다.

1) TableMapper 클래스를 확장하는 더미 자바 클래스를 정의하고 일부 빈 구현지도를 오버라이드 (override) :

나는 다음과 같은 대안을 발견했다. 이제 스칼라에서이 더미 클래스를 확장합니다.

2)이 점은 mappers 특성을 정의하는 goole workaround 에서 발견되었습니다.

비록 내가 추측하고 있지만 내부 클래스와 관련이 있을지 모르지만 더 이상 단서와 설명이 없습니다.

편집 (이것은 일반적인 스칼라 질문하기위한 것입니다),

class ScalaMapReducer extends TableMapper[Text,IntWritable] 
{ 
    override def map(row:ImmutableBytesWritable,result:Result,context:Context):Unit = 
    { 
     //..some code 
    } 
} 
+2

오류를 설명하는 몇 가지 예제 코드를 추가해 주시겠습니까? – drexin

답변

4

오류 내 스칼라 클래스 샘플 코드 지도 아무것도 거의 항상 없다 오버라이드 (override) 맵에서 키, 값 유형의 불일치로 인해 정의를 줄입니다. 이중 샘플 코드가 더 나은 디버깅에 도움이되는지 확인하십시오.

3

제공되는 정보 (코드 없음)를 기반으로 작성했을 가능성이 가장 높은 오류 (이됩니다)는 유형 매개 변수를 잘못 사용하는 것입니다. 다음과 같이

public interface I<T> { public void doStuff(T t); } 

이 아마도 당신이 구현 될 수 있습니다 예를 들어, 인터페이스는 방법을 정의하는 경우

class I0 extends I[String] { override def doStuff[String](String s) } 
               // ^^^^^^ ^^^^^^ 
               // oops, a type parameter 

당신이 우리에게 코드를 표시하지 않았기 때문에 나는 확신 할 수는 없지만. IDE을 사용하는 인 경우 빈 구현을 채우기 위해 요청하지 않으시겠습니까? (IDEA 사용, CTRL-i)