2

DisributedCacheを使用してクラスパスに.jarファイルを追加しています。

DistributedCache.addFileToClassPath(new Path("binary/tools.jar"), job.getConfiguration());

addFileToClassPath()が.jarファイルをクラスパスに追加するために使用される正しいAPIであるかどうかはわかりません。マッパーからクラスパスを取得しようとすると、追加されたjarが表示されませんでした。クラスパスには、ジョブの作業ディレクトリ(jobcache dir)が含まれていますが、DistributedCacheを介して分散されたjarは含まれていません。

Properties prop = System.getProperties();
System.out.println("The classpath is: " + prop.getProperty("java.class.path", null));

addArchiveToClassPath()も試してみましたが、うまくいきませんでした。

私は何かが足りないのですか?

ありがとう、

4

2 に答える 2

7

問題はパスにありました。addFileToClassPath()またはaddArchiveToClassPath()、絶対パスのみを入力として使用します。binary / tools.jarは相対的であるため、機能しませんでした。パスを指定する必要があります/user/<username>/binary/tools.jar.. 。これで正常に動作します。失敗さえhdfs://<hostname>:port/user/..します。

皆さん、ありがとうございました..

于 2012-07-18T01:00:32.623 に答える
2

ローカル ファイル システムまたは HDFS のクラスパスに追加する jar はありますか?

DistributedCache は、指定したパスが HDFS にあることを想定しています

于 2012-07-17T13:52:30.440 に答える