1

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>
4

1 に答える 1

3

リソースはURLとして追加する必要があります。そうしないと、文字列はクラスパスリソースとして解釈されます(現時点では解決されず、無視されます。警告メッセージがどこかにダンプされると思います)。

/**
 * 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"));
}
于 2012-07-13T22:02:34.237 に答える