2

まず、マッパー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());

しかし、うまくいきません。システム値を1つだけ設定しようとしましたが、どちらも機能しません。Mapper では、System.getenv に値が含まれていません。しかし、job.xml にはキーと値があります。これを行う方法はありますか?

4

1 に答える 1

1

Hadoop が古すぎるようです。これは hadoop 0.20 のバグです。

0.21以上の安定した1.0.xにアップグレードしてください。

詳細については、関連する jiraおよびhadoop 0.21.0 リリース ノートを参照してください。

于 2012-12-03T22:47:07.243 に答える