[HADOOP] hadoop은 스파크 상태에서 실행될 때 stderr을 stdout에 병합합니다.
HADOOPhadoop은 스파크 상태에서 실행될 때 stderr을 stdout에 병합합니다.
입력 할 때
hadoop fs -text /foo/bar/baz.bz2 2>err 1>out
비어 있지 않은 두 파일이 있습니다.
2015-05-26 15:33:49,786 INFO [main] bzip2.Bzip2Factory (Bzip2Factory.java:isNativeBzip2Loaded(70)) - Successfully loaded & initialized native-bzip2 library system-native
2015-05-26 15:33:49,789 INFO [main] compress.CodecPool (CodecPool.java:getDecompressor(179)) - Got brand-new decompressor [.bz2]
파일의 내용과 함께 (예상대로).
파이썬 (2.6)에서 동일한 명령을 호출하면 :
from subprocess import Popen
with open("out","w") as out:
with open("err","w") as err:
p = Popen(['hadoop','fs','-text',"/foo/bar/baz.bz2"],
stdin=None,stdout=out,stderr=err)
print p.wait()
나는 똑같은 (올바른) 행동을 얻습니다.
그러나 PySpark에서 동일한 코드를 실행하거나 스파크 제출을 사용하면 빈 err 파일이 생성되고 out 파일은 위의 로그 메시지로 시작됩니다 (그리고 실제 데이터가 포함되어 있음).
내가 뭘 잘못하고 있죠?
NB : 파이썬 코드의 의도는 hadoop fs -text의 출력을 다른 프로그램 (즉, stdout = PIPE를 Popen에 전달)에 제공하는 것이므로 hadoop fs -get을 제안하지 마십시오. 감사.
추신. 시간 내에 hadoop을 실행할 때 :
from subprocess import Popen
with open("out","w") as out:
with open("err","w") as err:
p = Popen(['/usr/bin/time','hadoop','fs','-text',"/foo/bar/baz.bz2"],
stdin=None,stdout=out,stderr=err)
print p.wait()
시간 출력이 올바르게 잘못되지만 hadoop 로그가 잘못 출력됩니다.
즉, hadoop은 스파크 상태에서 stderr을 stdout에 병합합니다.
해결법
from https://stackoverflow.com/questions/30467502/hadoop-when-run-under-spark-merges-its-stderr-into-stdout by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Apache Hadoop을 2.4.1에서 2.6.0으로 업그레이드 (0) | 2019.09.12 |
---|---|
[HADOOP] hadoop 설치없이 로컬 파일 시스템에서 hadoop 시퀀스 파일을 만드는 방법은 무엇입니까? (0) | 2019.09.12 |
[HADOOP] Pig로 (A, B, C)를 (AB, AC, BC)로 바꾸는 방법? (0) | 2019.09.12 |
[HADOOP] 내 프로그램을 실행하는 동안 hadoop 메시지가 표시됩니다. 무슨 뜻이에요? (0) | 2019.09.12 |
[HADOOP] 원사 미니 클러스터 컨테이너 로그 디렉토리에 syslog 파일이 없습니다 (0) | 2019.09.12 |