2015-08-02 2 views
2

Я пытаюсь выполнить карту уменьшить код, как показано ниже:Hadoop Streaming с помощью питона

hadoop jar /usr/lib/Hadoop/Hadoop-streaming-0.20.2-cdh3u2.jar –file mapper.py –mapper mapper.py –file reducer.py – reducer reducer.py –input /user/training/samplypy.txt –ouput /user/training/pythonMR/output 

становится ниже исключением -

Exception in thread "main" java.lang.ClassNotFoundException: –file 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149) 

Я использую Hadoop 1.0.3. Я пробовал с несколькими версиями Hadoop-потоковый баночка, как:

hadoop-streaming-0.20.2-cdh3u2.jar 
hadoop-streaming-1.2.0.jar 
hadoop-streaming.jar 
+0

Где находится документ, в котором говорится о выполнении этой команды? – gonbe

+0

У вас есть набор переменных env $ HADOOP_HOME? – owen79

+0

См. Это http://stackoverflow.com/questions/16701979/packaging-a-jython-program-in-an-executable-jar. – srikanth

ответ

1
  1. Одна вещь, которую я могу сказать, что вы не использовали полный путь к «-file» заявление:

    -file /mapper/location/mapper.py (используйте полный путь с именем файла здесь)

    -mapper mapper.py (правильно, картограф только имя файла)

    -file /reducer/location/reducer.py (использовать полный путь с fi имя файла здесь)

    - редуктор reducer.py (имя файла правильно, только редуктор)

  2. убедитесь, что ваш -input и -output указывают на HDFS не локальный путь

Вот код, который я использовал:

hadoop jar /opt/cloudera/parcels/hadoop-streaming.jar \ 
-D mapred.reduce.tasks=15 -D stream.map.input.field.separator=',' -D stream.map.output.field.separator=',' \ 
-D mapred.textoutputformat.separator=',' \ 
-input /user/temp/in/ \ 
-output /user/temp/out \ 
-file /app/qa/python/mapper.py \ 
-mapper mapper.py \ 
-file /app/qa/python/reducer.py \ 
-reducer reducer.py