실패하거나 멈춘 실행 작업 조사하기
실행 작업이 처음부터 실패하는지, 정상적으로 실행되다가 실패하기 시작했는지에 따라 비교할 근거가 달라집니다. 마지막 성공 실행의 입력 트랜잭션, 코드와 실행 모듈을 기준으로 차이를 좁힙니다.
실패 원인 조사 순서
- 재시도에서 정상적으로 끝났는지 확인합니다. 한 번 실패한 뒤 성공한다면 일시적인 네트워크 또는 인프라 문제일 수 있습니다. Foundry는 재시도 가능한 실패에 대해 재시도를 수행할 수 있습니다.
- 처음 빌드하는 작업이라면 사용자 코드의 오류를 먼저 조사합니다.
- 과거에 성공했다면
Compare로 마지막 성공 실행과 입력 및 코드 변화를 비교합니다. - 코드가 바뀌었다면 해당 변경을 검토하고 이전 코드로 빌드했을 때의 차이를 확인합니다.
- Spark 모듈 버전이 바뀌었다면 이전에 성공한 모듈 버전으로 디버그 작업을 실행하여 호환성 범위를 구분합니다.
- 입력 크기나 shuffle 쓰기가 크게 늘었거나 이전 모듈에서도 같은 작업이 실패한다면 메모리 부족과 자원 사용을 조사합니다.
- 저장소 업그레이드를 포함하여 마지막 성공 이후의 다른 커밋도 확인하고, 해당 변경을 되돌린 실행과 비교합니다. 업그레이드가 최소 Spark 모듈 버전을 올렸다면 코드와 런타임 변경이 함께 영향을 줄 수 있습니다.
- 모듈 및 저장소 변경 근거가 없으면 드라이버 로그와 사용자 코드의 구체적인 실패 지점을 조사합니다.
이전 모듈에서만 성공한다면 최신 모듈과의 호환성 문제일 수 있습니다. 오류가 요구하는 코드 변경을 확인하고 직접 해결하기 어려우면 Palantir 담당자에게 비교한 버전과 오류를 전달합니다.
특정 모듈로 디버그 실행하려면 작업 보고서의 Actions > Rerun as Debug job에서 이전 성공 실행의 모듈 버전을 선택합니다. 런타임 버전과 저장소 업그레이드는 변환 런타임 및 릴리스 절차와 함께 관리합니다.
Job Comparison 열기
Builds의 빌드 보고서에서 출력 트랜잭션이 있는 실행 작업의 Compare를 선택합니다. 현재 실행과 이전 성공 실행을 비교하는 도구입니다.
Comparison Summary
전체 변경을 요약합니다. 데이터셋을 선택하면 Dataset 앱의 Compare에서 트랜잭션 차이를 확인할 수 있습니다. 저장소를 선택하면 해당 작업이 사용한 커밋의 저장소를 열어 출력 정의 파일뿐 아니라 저장소 전체를 조사할 수 있습니다.
Input Changes
입력의 메타데이터, 스키마와 통계 변화를 보여 줍니다. 열에 중요한 변화가 있으면 행을 펼쳐 요약을 확인하고, 데이터셋을 선택하여 자세한 비교로 이동합니다.
Code Changes
출력을 정의한 파일에서 이전 성공 실행 이후의 코드 차이를 보여 줍니다. Code Repositories 작업은 해당 커밋의 저장소로 이동할 수 있습니다. 코드 비교 자체는 Code Repositories와 Code Workbook 기반 작업에 제공됩니다.
오래 멈춘 빌드
진행하지 않는 빌드도 같은 비교 순서로 조사합니다. 처음 실행하는 작업이라면 사용자 코드가 진행을 막는지 우선 확인합니다.
빌드를 취소하면 스트리밍 중이던 드라이버 로그를 잃을 수 있으므로 취소 전에 작업 보고서의 Logs > _driver.log > Download로 내려받습니다. 실행 중인 Spark details의 Executors > Snapshot으로 상태 스냅샷을 남기는 방법도 있습니다. 이렇게 보존한 근거로 취소 후에도 상태를 조사할 수 있습니다.
AIP 오류 설명
플랫폼 인스턴스에서 AIP가 활성화되어 있으면 실패한 작업의 상세 화면에 AI error enhancer 위젯이 표시될 수 있습니다. 오류의 의미와 해결 방향을 파악하는 데 활용하되 제안은 실제 로그, 코드와 입력 변경에 대조합니다.