복붙노트

[HADOOP] Hadoop 구성 속성이 Null을 반환합니다.

HADOOP

Hadoop 구성 속성이 Null을 반환합니다.

Hadoop에서 구성을 설정하는 방법을 테스트하는 간단한 코드를 작성했습니다.

public static void main(String[] args) {

        Configuration conf = new Configuration();
        conf.addResource("~/conf.xml");
        System.out.println(conf);
        System.out.println(conf.get("color"));
}

위 프로그램의 결과는 다음과 같습니다.

Configuration: core-default.xml, core-site.xml, ~/conf.xml
null

따라서 conf.get ( "color")는 null을 반환합니다. 그러나 conf.xml에서 다음과 같이이 속성을 명시 적으로 설정했습니다.

<property>
        <name>color</name>
        <value>yellow</value>
        <description>Color</description>
</property>

해결법

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

    1.리소스를 URL로 추가해야합니다. 그렇지 않으면 String이 클래스 경로 리소스로 해석됩니다 (현재로서는 해결되지 않고 무시됩니다. 경고 메시지가 어딘가에 덤핑 될 것이라고 생각합니다).

    리소스를 URL로 추가해야합니다. 그렇지 않으면 String이 클래스 경로 리소스로 해석됩니다 (현재로서는 해결되지 않고 무시됩니다. 경고 메시지가 어딘가에 덤핑 될 것이라고 생각합니다).

    /**
     * Add a configuration resource. 
     * 
     * The properties of this resource will override properties of previously 
     * added resources, unless they were marked <a href="#Final">final</a>. 
     * 
     * @param name resource to be added, the classpath is examined for a file 
     *             with that name.
     */
    public void addResource(String name) {
      addResourceObject(name);
    }
    

    어쨌든 이것을 시도해보십시오 (syserr에서 노란색으로 표시됨).

    @Test
    public void testConf() throws MalformedURLException {
        Configuration conf = new Configuration();
    
        conf.addResource(new File("~/conf.xml")
                .getAbsoluteFile().toURI().toURL());
        conf.reloadConfiguration();
        System.err.println(conf);
    
        System.err.println(conf.get("color"));
    }
    
  2. from https://stackoverflow.com/questions/11478036/hadoop-configuration-property-returns-null by cc-by-sa and MIT license