[HADOOP] Hadoop에서 Python을 사용하여 map reduce를 실행할 수 없습니까?
HADOOPHadoop에서 Python을 사용하여 map reduce를 실행할 수 없습니까?
나는 잘 작동하는 단어 수 프로그램을 위해 파이썬으로 매퍼와 감속기를 썼습니다. 다음은 샘플입니다.
echo "hello hello world here hello here world here hello" | wordmapper.py | sort -k1,1 | wordreducer.py
hello 4
here 3
world 2
큰 파일에 대해 hadoop 작업을 제출하려고하면 오류가 발생합니다.
hadoop jar share/hadoop/tools/sources/hadoop-*streaming*.jar -file wordmapper.py -mapper wordmapper.py -file wordreducer.py -reducer wordreducer.py -input /data/1jrl.pdb -output /output/py_jrl
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)
커맨드 라인을 다음과 같이 변경했습니다 (위에서 와일드 카드를 제거했습니다).
hadoop jar share/hadoop/tools/sources/hadoop-streaming-2.2.0-sources.jar -file wordmapper.py -mapper wordmapper.py -file wordreducer.py -reducer wordreducer.py -input /data/1jrl.pdb -output /output/py_jrl
Exception in thread "main" java.lang.ClassNotFoundException: -file
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)
왜 이러한 오류가 발생하고 어떻게 해결할 수 있습니까? hadoop2를 사용합니다. 감사!
해결법
-
==============================
1.적어도 하나의 문제는 .java 파일이며 실행할 수없는 -sources.jar을 사용하고 있다는 것입니다.
적어도 하나의 문제는 .java 파일이며 실행할 수없는 -sources.jar을 사용하고 있다는 것입니다.
대신 이것을 사용해보십시오 ...
share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar
그리고 존재하지 않는 경우 파일 이름에 -sources가없는 hadoop-streaming * .jar을 찾으십시오.
from https://stackoverflow.com/questions/24661653/unable-to-run-map-reduce-using-python-in-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HADOOP-간단한 MR 작업에서 위상 중단을 줄입니다 (0) | 2019.09.15 |
---|---|
[HADOOP] hadoop이 서비스를 시작하기 전에 비밀번호를 묻는 이유는 무엇입니까? (0) | 2019.09.15 |
[HADOOP] 정수에서 문자 제거 (0) | 2019.09.15 |
[HADOOP] Cassandra Upgrade 0.8.2-> 0.8.4 오류“모든 엔드 포인트 연결 실패” (0) | 2019.09.15 |
[HADOOP] SQL Hive 하위 쿼리 오류 (0) | 2019.09.15 |