Spark에 break point를 붙여서 Debug하는 방법

2807 단어 스파크

소개



Spark를 사용하고 있어 다음과 같은 매운맛이 있었습니다.
  • Hyper Parameter를 조금씩 바꾸어 튜닝하고 싶은데, 거기에 이르는 데이터 처리에 너무 오래 걸려서 여러 번 시도하는 것이 힘들다.
  • spark-shell 하지만 아무리 디버그 할 수 없지는 않지만, 디버그하고 싶은 개소에 이르기까지의 스텝을 shell에 박는 것이 귀찮다.
  • 아 Spark 하지만 break point 붙일 수 있으면…

  • 이 기사는 그런 괴로움을 해소하는 기사입니다.

    요약



    간단한 이야기이므로 먼저 정리하면,
  • spark-submit 때로는 SPARK_SUBMIT_OPTSjdwp
  • Intellij의 Remote Debugger 기능으로 break point를 붙입니다

  • 라고 하는 것입니다.


  • 이 기사는 Intellij에서 디버깅하는 방법을 작성하지만 eclipse에서도 사용할 수 있습니다.
  • 개별 기술에 대한 설명은 없습니다.

  • Step1: Intellij에서 Remote Debugger 설정하기



    1. Run -> Edit Configuration에서 설정 화면을 엽니 다.
    2. "+"-> "Remote"에서 Remote Debugger 설정을 엽니 다
    3. Name 에는 좋아하는 이름, Host 에는 spark-submit 하는 Host 의 IP 를 씁시다. Command line arguments for running remote JVM 라는 항목에 쓰여진 설정은 나중에 사용하므로 복사해 두십시오.
    4. OK를 눌러 설정을 저장합니다.

    이제 Remote Debugger를 시작할 준비가 되었습니다.

    Step2: Remote Debug 가능한 설정을 하고 spark-submit 한다


  • SPARK_SUBMIT_OPTS 라는 환경 변수에 Step1 로 복사한 jdwp 의 설정을 넣는다.
  • export SPARK_SUBMIT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

  • spark-submit 실행

  • Step3: Remote Debugger를 실행한 Spark에 연결


  • "Run"-> "Debug '이미지 이름"에서 Remote Debugger를 실행하십시오.
  • 이 때, spark-submit 그렇지 않으면 ConnectException

  • 올바르게 연결되면 Connected to target VM, address: 'さっき指定したホスト:5005', transport: 'socket' (Spark를 다른 서버에서 실행했기 때문에 IP가 변경되었지만 무시하십시오 ...)
  • break point 붙여넣기
  • Spark 의 처리가 진행되어 버리면 재실행이 필요하게 되므로 사전에 붙여 두는 것이 무난합니다.

  • break point 를 붙인 부분에서 멈추므로 debug 합니다.
  • "Evaluate Expression"에서 DataFrame

  • 이상



    Spark로 취급하는 데이터는 Local로 취급할 수 있는 양이 아닌 케이스가 대부분이므로, 이러한 Remote Debug를 할 수 있는 것은 매우 편리하네요.

    좋은 웹페이지 즐겨찾기