2

首先我尝试了如何从 Mapper Hadoop 设置系统环境变量?mapred.map.child.env对我不起作用。

我正在使用 hadoop 0.20.1。我想将开始工作的类中的所有系统环境传递给映射器。这是我所做的:

    StringBuilder envStr = new StringBuilder();
    for (Entry<String, String> entry : System.getenv().entrySet()) {
        envStr.append(entry.getKey() + "=" + entry.getValue() + ",");
    }
    if (envStr.length() > 0) {
        envStr.deleteCharAt(envStr.length() - 1);
    }
    // System.out.println("Setting mapper child env to :" + envStr);
    getConf().set("mapred.map.child.env", envStr.toString());

但它不起作用。我也试过只设置一个系统值,但它也不起作用。在 Mapper 中, System.getenv 不包含该值。但是 job.xml 有关键和价值。有没有办法做到这一点?

4

1 回答 1

1

看来你的hadoop太旧了。这是 hadoop 0.20 的错误。

请升级到 0.21 或更稳定的 1.0.x。

有关更多信息,请参阅相关的 jirahadoop 0.21.0 发行说明

于 2012-12-03T22:47:07.243 回答