[HADOOP] Scala 2.9.0에서 Hadoop Mapper를 어떻게 구현합니까?
HADOOPScala 2.9.0에서 Hadoop Mapper를 어떻게 구현합니까?
2.8.1에서 Scala 2.9.0으로 마이그레이션 할 때 Hadoop 매퍼를 제외한 모든 코드가 작동했습니다. 그 동안 래퍼 객체가 있었기 때문에 다음 예제로 넘어갔습니다.
import org.apache.hadoop.mapreduce.{Mapper, Job} object MyJob { def main(args:Array[String]) { val job = new Job(new Configuration()) job.setMapperClass(classOf[MyMapper]) } } class MyMapper extends Mapper[LongWritable,Text,Text,Text] { override def map(key: LongWritable, value: Text, context: Mapper[LongWritable,Text,Text,Text]#Context) { } }
2.8.1에서이 코드를 실행하면 매우 잘 돌아갑니다 (2.8.1에서는 많은 프로덕션 코드가 있고 2.9.0에서는 다음과 같은 컴파일 오류가 발생합니다 :
error: type mismatch;
found : java.lang.Class[MyMapper](classOf[MyMapper])
required: java.lang.Class[_ <: org.apache.hadoop.mapreduce.Mapper]
job.setMapperClass(classOf[MyMapper])
실패한 호출은 작업 객체에서 setMapperClass를 호출 할 때 발생합니다. 이 메소드의 정의는 다음과 같습니다.
public void setMapperClass(java.lang.Class<? extends org.apache.hadoop.mapreduce.Mapper> cls) throws java.lang.IllegalStateException { /* compiled code */ }
Mapper 클래스 자체의 정의는 다음과 같습니다.
public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
누구든지 내가 뭘 잘못하고 있는지 감각이 있습니까? MyMapper는 Mapper를 확장하고 메서드는 Mapper를 확장하는 무언가를 원합니다. 그리고 그것은 2.8.1에서 훌륭하게 작동합니다 ...
해결법
-
==============================
1.어리석은 것처럼 보이기 전에 작업 전에 매퍼를 정의하여 문제를 해결할 수 있습니다. 다음 컴파일 :
어리석은 것처럼 보이기 전에 작업 전에 매퍼를 정의하여 문제를 해결할 수 있습니다. 다음 컴파일 :
import org.apache.hadoop._ import org.apache.hadoop.io._ import org.apache.hadoop.conf._ import org.apache.hadoop.mapreduce._ class MyMapper extends Mapper[LongWritable,Text,Text,Text] { override def map(key: LongWritable, value: Text, context: Mapper[LongWritable,Text,Text,Text]#Context) { } } object MyJob { def main(args:Array[String]) { val job = new Job(new Configuration()) job.setMapperClass(classOf[MyMapper]) } }
from https://stackoverflow.com/questions/6028221/how-does-one-implement-a-hadoop-mapper-in-scala-2-9-0 by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Spark 쉘에서 직접 ORC 파일 읽기 (0) | 2019.06.20 |
---|---|
[HADOOP] 하둡이없는 불꽃 : 발사 실패 (0) | 2019.06.20 |
[HADOOP] Hadoop namenode는 모든 컴퓨터가 시작된 후에 포맷되어야합니다. (0) | 2019.06.20 |
[HADOOP] HDFS에서 CSV를 읽는 HIVE에 테이블을 만들 수 없습니다. (0) | 2019.06.20 |
[HADOOP] JAVA_HOME이 설정되어 있지 않습니다. (0) | 2019.06.20 |