복붙노트

[HADOOP] Mapper 및 Reducer 클래스를 정적으로 선언하는 이유는 무엇입니까?

HADOOP

Mapper 및 Reducer 클래스를 정적으로 선언하는 이유는 무엇입니까?

이것은 Java 이해의 나의 부족을 보여주는 가능성이 있지만 왜 대부분의 MapReduce 프로그램에서 매퍼 및 감속기 클래스가 정적으로 선언되는지 궁금합니다.

해결법

  1. ==============================

    1.매퍼 및 감속기 클래스를 다른 클래스의 내부 클래스로 선언 할 때 해당 클래스가 부모 클래스에 종속되지 않도록 정적으로 선언해야합니다.

    매퍼 및 감속기 클래스를 다른 클래스의 내부 클래스로 선언 할 때 해당 클래스가 부모 클래스에 종속되지 않도록 정적으로 선언해야합니다.

    Hadoop은 리플렉션을 사용하여 각지도에 대한 클래스의 인스턴스를 만들거나 실행되는 작업을 줄입니다. 생성 된 새 인스턴스는 0 인수 생성자를 필요로합니다 (그렇지 않으면 전달할 내용을 어떻게 알 수 있습니까?).

    정적 키워드없이 내부 매퍼를 선언하거나 클래스를 줄임으로써 Java 컴파일은 실제로 생성시 상위 클래스의 인스턴스가 전달 될 것으로 예상하는 생성자를 생성합니다.

    생성 된 클래스 파일에 대해 javap 명령을 실행하여이를 볼 수 있어야합니다.

    또한 정적 키워드는 상위 클래스 선언에 사용되는 경우 유효하지 않습니다 (상위 레벨에서는 보이지 않는 이유는 하위 클래스에서만 나타납니다)

  2. ==============================

    2.나는 두 가지 이유를 생각할 수있다 :

    나는 두 가지 이유를 생각할 수있다 :

  3. from https://stackoverflow.com/questions/11570674/why-declaring-mapper-and-reducer-classes-as-static by cc-by-sa and MIT license