리눅스 Spark INFO 로그 없애기(ver 3.3.0) (feat. log4j2.properties)

galion·2022년 7월 16일
0
post-thumbnail

최근에 스파크를 공부하다가, Spark-submit으로 스파크 잡을 제출하여 실행하는 경우 스파크 로그가 너무 많이 나와서 로그를 가리는 방법을 찾고 있었다.

내가 공부하는 책에서도 (22년 6월에 출간된 책) 조금 옛날 버전으로 알려주어 적용이 전혀 안되고, 인터넷으로도 찾아봤는데도 정보가 없길래 직접 해보고 성공하여 포스트를 남긴다.


이전에 했던 방식

이전에는 2가지 방식이 존재한다. 한 가지는 내가 제출한 스파크 잡(=파이썬 코드나 스칼라 코드같은 실행할 코드)에

from pyspark.sql import SparkSession
    spark = SparkSession.builder.\
        master('xxx').\
        appName('xxx').\
        getOrCreate()
spark.sparkContext.setLogLevel('WARN')

와 같은 방식으로 직접 소스코드마다 내가 출력할 로그 레벨을 조정해주는 것. 참고로 로그 레벨은 다음과 같다.

TRACE
DEBUG
INFO
WARN
ERROR
FATAL
ALL

혹은 본인의 스파크 디렉토리($SPARK_HOME으로 보통 환경변수 세팅을 하더라.)의 conf 폴더에 있는 log4j.properties에 존재하는 log4j.rootCategory=INFO 옵션을 log4j.rootCategory=WARN 으로 바꿔주는 방식인데,
만약 log4j.properties가 없다면 이미 존재하는 log4j.properties.templatecp log4j.properties.template log4j.properties 와 같은 명령어로 복사 후 수정하면 되었다.

최신 버전은 다르다??

하지만 내 Spark 버전은 3.3.0인데, 여기서 차이점이 있었다. log4j.properties가 없고 대신 log4j2.properties.template만 있는 것...

먼저 위의 방식대로
cp log4j2.properties.template log4j2.properties 하여 log4j2.properties를 생성하고, 이 파일을 수정하면 된다.

먼저 sudo vi $SPARK_HOME/conf/log4j2.properties (환경변수 설정을 안했다면 자기 스파크 디렉토리의 conf폴더로 접근하면 된다.) 로 log4j2.properties를 vi 에디터로 실행.

이 상태에서 i를 눌러 편집모드에 진입하고,

위의 코드가 나올때 까지 올린 후 (맨 위에 있음) rootLooger.level = INFO 상태인 것을 rootLooger.level = WARN으로 바꿔주고

ESC => :wq! 로 저장 후 종료하면 정상적으로 INFO 로그가 출력되지 않는다.

profile
취업 준비중

0개의 댓글