1

私の次のコードは、期待される出力を生成しません:

public static void main(String[] args) throws MalformedURLException {

    Configuration.addDefaultResource("/home/some_user/conf.xml");
    Configuration conf = new Configuration();
    System.out.println(conf);
    System.out.println(conf.get("color"));
    assertThat(conf.get("color"), is("yellow"));
}

プロパティcolorは、conf.xml ファイルで次のように設定されます。

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

ファイルconf.xmlがデフォルト構成に組み込まれていないようです。

のドキュメントにConfiguration.addDefaultResource(String param)は、パラメーターがクラスパスにある必要があると書かれています。プログラムに完全な絶対パスを既に指定している場合、クラスパスにファイルを追加する方法がわかりません。

4

1 に答える 1

2

最初の観察: 使用している Hadoop のバージョンはわかりませんが、addDefaultResource() は非常に長い間廃止されています。

Hadoop の新しいバージョンでは、目的を達成するための標準的な方法は次のとおりです。

Configuration conf = new Configuration()
conf.addResource("path/to/file");
...

クラスパスの問題に関しては、構成ファイルをクラスパスに配置するだけです。したがって、クラスパスが何にあるのかを発見する必要があります(環境変数または -classpath オプションで設定したものです)。-classpath オプションを使用せず、クラスパス環境変数がない場合は、自動的に現在のディレクトリ (".") に設定されます。

于 2012-07-13T23:30:37.250 に答える