데이터 통합파이프라인 최적화 및 디버깅Debugging pipelines메모리 부족 (OOM) 오류 해결

본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

메모리 부족 (OOM) 오류 해결

메모리 부족 오류는 몇 가지 방식으로 작업에서 발생할 수 있습니다:

  • "Job aborted due to stage failure" 메시지 확인
  • "ExecutorLostFailure" 메시지 확인
  • "작업 [jobID] 사용 중에 Spark 모듈이 종료되었습니다. (ExitReason: MODULE_UNREACHABLE)" 메시지 확인
  • 드라이버와의 연결이 끊어짐 확인

이러한 오류 메시지는 빌드에 허용된 최대 메모리를 초과했음을 나타냅니다. 이는 일반적으로 플랫폼의 결함이 아니라 플랫폼에서 실행하도록 요청한 빌드의 문제입니다. 빌드를 실행하는 데 필요한 메모리를 줄일 수 있는 몇 가지 방법이 있습니다.

해결하기 위해 다음 단계를 수행하세요:

  • 변환 작업이 Python 또는 Pandas로 작성된 경우:
    • 계산을 가능한 한 PySpark로 이동하여 전체 컴퓨팅 클러스터의 힘을 이용하십시오. Python 및 Pandas의 원시 로직은 드라이버에서 단일 프로세서에서 실행되며 이는 아마 노트북보다 느릴 것입니다.
  • 변환 작업이 조인을 사용하는 경우:
    • 'null 조인'을 찾아보세요 - 여러 행 값이 null인 열에 조인하는 경우입니다. 이는 조인의 메모리 사용량을 크게 늘릴 수 있습니다. 이를 해결하기 위해, 변환 작업에서 또는 이전 변환 작업에서 문제가 되는 열의 null을 필터링할 수 있습니다.
    • 결과물 데이터셋에서 행 수를 크게 늘리는 조인을 찾아 확인하십시오. 팁으로, 데이터셋의 키별 행 수와 조인 후 결과 행 수를 계산하는 분석을 실행하는 것입니다.
  • 입력 데이터셋의 파일 크기를 확인하세요 (데이터셋 → 상세 정보 → 파일 → 데이터셋 파일). 각 파일은 최소한 128MB 이상이어야 합니다. 파일이 너무 작거나 너무 큰 경우, 파일을 재분할해야 합니다.
  • 변환 작업을 여러 개의 작은 변환 작업으로 분할하세요. 이렇게 하면 실패의 원인이 되는 변환 작업의 부분을 파악하는데 도움이 될 수 있습니다.
  • 필요하지 않은 열을 입력 데이터셋에서 제거하거나 Spark가 메모리에 유지해야 하는 데이터 양을 줄이기 위해 필요하지 않은 행을 제거하는 데이터셋을 미리 필터링하십시오.
  • 가능하다면, 변환 작업의 로직을 단순화하십시오.