[HADOOP] Mapper 및 Reducer 클래스를 정적으로 선언하는 이유는 무엇입니까?
HADOOPMapper 및 Reducer 클래스를 정적으로 선언하는 이유는 무엇입니까?
이것은 Java 이해의 나의 부족을 보여주는 가능성이 있지만 왜 대부분의 MapReduce 프로그램에서 매퍼 및 감속기 클래스가 정적으로 선언되는지 궁금합니다.
해결법
-
==============================
1.매퍼 및 감속기 클래스를 다른 클래스의 내부 클래스로 선언 할 때 해당 클래스가 부모 클래스에 종속되지 않도록 정적으로 선언해야합니다.
매퍼 및 감속기 클래스를 다른 클래스의 내부 클래스로 선언 할 때 해당 클래스가 부모 클래스에 종속되지 않도록 정적으로 선언해야합니다.
Hadoop은 리플렉션을 사용하여 각지도에 대한 클래스의 인스턴스를 만들거나 실행되는 작업을 줄입니다. 생성 된 새 인스턴스는 0 인수 생성자를 필요로합니다 (그렇지 않으면 전달할 내용을 어떻게 알 수 있습니까?).
정적 키워드없이 내부 매퍼를 선언하거나 클래스를 줄임으로써 Java 컴파일은 실제로 생성시 상위 클래스의 인스턴스가 전달 될 것으로 예상하는 생성자를 생성합니다.
생성 된 클래스 파일에 대해 javap 명령을 실행하여이를 볼 수 있어야합니다.
또한 정적 키워드는 상위 클래스 선언에 사용되는 경우 유효하지 않습니다 (상위 레벨에서는 보이지 않는 이유는 하위 클래스에서만 나타납니다)
-
==============================
2.나는 두 가지 이유를 생각할 수있다 :
나는 두 가지 이유를 생각할 수있다 :
from https://stackoverflow.com/questions/11570674/why-declaring-mapper-and-reducer-classes-as-static by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Spark 플랫폼에 native-hadoop 라이브러리를로드 할 수 없습니다. (0) | 2019.06.07 |
---|---|
[HADOOP] E0902 받기 : 예외 발생 : [사용자 : oozie는 oozie로 가장 할 수 없습니다] (0) | 2019.06.07 |
[HADOOP] 경로 : \ tmp의 사용 권한을 설정하지 못했습니다. (0) | 2019.06.07 |
[HADOOP] Hadoop 작업의 CPU 시간은 무엇을 의미합니까? (0) | 2019.06.07 |
[HADOOP] Hadoop .20 데이터 노드의 'GC 오버 헤드 한도 초과' (0) | 2019.06.07 |