【问题标题】:Hadoop Configuration.addDefaultResource() not workingHadoop Configuration.addDefaultResource() 不工作
【发布时间】:2012-07-13 20:08:07
【问题描述】:

我的以下代码没有产生预期的输出:

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) 的文档说参数应该在类路径中。当我已经为程序提供完整的绝对路径时,我不明白如何将文件添加到类路径。

【问题讨论】:

  • 自您上次提出此问题后的 2 小时内发生了什么? stackoverflow.com/questions/11478036/…
  • @ChrisWhite:我不知道 Configuration.addResource() 已被弃用(因此在我使用较新版本的 Hadoop 时不起作用)。我也想试试这个方法。您对上一个问题的回答确实对我有所帮助,但问题略有不同。

标签: configuration hadoop configuration-files


【解决方案1】:

第一个观察:我不知道您使用的是哪个版本的 hadoop,但 addDefaultResource() 已被弃用很长时间。

在更高版本的 Hadoop 中,实现您想要的标准方法是:

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

关于类路径问题,您只需将配置文件放在类路径中即可。因此,您必须发现类路径是什么(它是环境变量或您使用 -classpath 选项设置的变量)。如果您没有使用 -classpath 选项并且没有 classpath 环境变量,那么它会自动设置为当前目录(“.”)

【讨论】:

  • 传递字符串路径对我不起作用。我不得不使用conf.addResource(new File("path/to/file").toURI().toURL());
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
相关资源
最近更新 更多