MapReduce 작업을 제출하고 결과를 분석하는 Tomcat에서 실행되는 Spring MVC 애플리케이션이 있습니다. My Spring Batch tasklet은 성공적으로 MR 드라이버 클래스를 호출하고 작업을 실행할 수 있습니다. 드라이버 클래스는 Configured
으로 확장되고 Tool
을 구현하며 HDFS 파일을 쉽게 조작 할 수 있습니다. 드라이버 클래스와 MR 코드를 포함하는 maven 모듈은 webapp 모듈에 대한 의존성으로 추가됩니다.Hadoop null을 반환하는 getConf()를 구성했습니다.
분석을 위해 webapp 모듈에 Configured
을 확장하는 새 클래스를 만들었습니다. 이 클래스는 HDFS 파일을 읽고 분석합니다. 그러나 FileSystem
개체를 만들려고하면 null 포인터 예외가 발생합니다.
public class ReportAnalyzer extends Configured{
public void analyze(String path) throws Exception{
FileSystem hdfs=FileSystem.get(getConf()); <-- NPE
//create Path, etc.
}
}
FileSystem
개체를 얻으려면 다른 작업이 필요합니까? hadoop 의존성은 mapreduce 모듈을 통해 webapp에 추가됩니다.
두 접근법 모두 내가 드라이버 클래스에서 사용할 때 클래스 패스에서 자동으로 채우려 고 시도한 Configuration 객체를 필요로합니다. –
classpath에 적절한 hadoop 설정 xml이있는 경우'Configuration' 생성자를 사용하면'new Configuration()'만으로 충분합니다. – user3122114