2

私はPythonで例を書いていmapperます。スクリプトはスタンドアロンのものとして正常に動作します。しかし、hadoop で実行するとエラーが発生します。reducerwordcount

私は使っているhadoop2.2

これが私のコマンドです:

hadoop jar share/hadoop/tools/sources/hadoop-streaming*.jar -mapper wordmapper.py -reducer wordreducer.py -file wordmapper.py -file wordreducer.py -input /data -output/output/result7

Exception in thread "main" java.lang.ClassNotFoundException: share.hadoop.tools.sources.hadoop-streaming-2.2.0-test-sources.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:249)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:205)

これを修正するには?

4

1 に答える 1

0

試してみてください

Hadoop jar $HADOOP_PREFIX/hadoop/tools/sources/hadoop-streaming*.jar -mapper 'wordmapper.py' -reducer 'wordreducer.py' -file $CODE_FOLDER/wordmapper.py -file $CODE_FOLDER/wordreducer.py -input / data -output /output/result7

$HADOOP_PREFIX は、マシン上の Hadoop が配置されているフォルダーの場所です。たとえば、私のマシンの/usr/local/。その場所に手動でアクセスして、そのjarが存在するかどうかを確認できる場合。

$CODE_FOLDER には、スクリプトが保存されているコード ファイルが含まれています。

于 2014-07-17T06:34:47.390 に答える