Synapse Analytics의 오류 코드 해석
오늘날 Azure Synapse Analytics에서 Spark 애플리케이션이 실패하는 이유를 설명할 수 있는 많은 요인이 있습니다. 예를 들어 시스템 오류 또는 사용자 관련 오류로 인한 것일 수 있습니다. 이전에는 Synapse Analytics의 실패한 작업에 해당하는 모든 오류가 LIVY_JOB_STATE_DEAD를 표시하는 일반 오류 코드로 표시되었습니다. 이 오류 코드는 작업이 실패한 이유에 대한 추가 인사이트를 제공하지 않았습니다. 드라이버, 실행기, Spark 이벤트, Livy 로그를 자세히 파악하여 근본 원인을 식별하고 해결 방법을 찾는 데 많이 노력해야 합니다.
이전의 일반 메시지를 대체하는 더 정확한 오류 코드 목록이 도입되었습니다. 새 메시지는 실패 원인을 설명합니다. Azure Synapse Analytics에서 작업이 실패할 때마다 오류 처리 기능은 백 엔드의 로그를 구문 분석하고 확인하여 근본 원인을 식별합니다. 그런 다음, 모니터링 창에서 사용자에게 문제를 해결하는 단계와 함께 메시지를 표시합니다.
Synapse에서 오류 분류 사용
다음 Spark 구성을 작업 또는 풀 수준에서 true
또는 false
로 설정하여 오류 분류 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다.
livy.rsc.synapse.error-classification.enabled
다음 섹션에는 현재 지원되는 몇 가지 오류 유형이 나와 있습니다. 우리는 모델을 개선하여 이러한 오류 코드를 지속적으로 개선하고 추가하고 있습니다.
오류 코드 범주
각 오류 코드는 다음 4가지 버킷 중 하나에 속합니다.
- 사용자 - 사용자 오류 표시
- 시스템 - 시스템 오류 표시
- 모호함 - 사용자 또는 시스템 오류일 수 있음
- 알 수 없음 - 아직 분류되지 않음. 오류 유형이 모델에 포함되지 않았기 때문일 수 있습니다.
분류 유형별 오류 코드 예
Spark_User_TypeError_TypeNotIterable
Python에서 멤버 자격 연산자(in, not in)를 사용하여 목록, 튜플, 사전과 같은 반복할 수 없는 개체의 값에 대한 멤버 자격 유효성을 검사할 때 TypeError: argument of type 'insert type' is not iterable
오류가 발생합니다. 이는 일반적으로 반복할 수 없는 개체에서 값을 검색하기 때문입니다. 가능한 해결 방법:
- 값이 반복할 수 있는 개체에 있는지 확인합니다.
- 한 값을 다른 값으로 확인하려면 멤버 자격 연산자 대신 논리 연산자를 사용합니다.
- 멤버 자격 연산자에 "None" 값이 포함되어 있으면 반복할 수 없으며 null 검사 또는 할당된 기본값을 수행해야 합니다.
- 사용된 값의 형식을 실제로 확인할 수 있고 입력이 올바른지 확인합니다.
Spark_System_ABFS_OperationFailed
ADLS Gen2 작업이 실패했습니다.
이 오류는 일반적으로 권한 문제로 인해 발생합니다.
Spark 작업에서 참조되는 모든 ADLS Gen2 리소스에 대해 작업에서 읽고 쓰는 데 필요한 스토리지 계정에 대한 "Storage Blob 데이터 기여자" RBAC 역할이 있는지 확인합니다. 이 Spark 애플리케이션에 대한 로그를 확인합니다. Synapse Studio로 이동하여 왼쪽 창에서 모니터 탭을 선택합니다. 작업 섹션에서 Apache Spark 애플리케이션을 선택하고, 목록에서 Spark 작업을 찾습니다. 이 문제가 발생하는 ADLS Gen2 스토리지 계정 이름의 경우 이 페이지의 아래쪽에 있는 로그 탭에서 사용할 수 있는 로그를 확인합니다.
Spark_Ambiguous_ClassLoader_NoClassDefFound
스크립트가 실행될 때 코드에 필요한 클래스를 찾을 수 없습니다.
패키지 관리 설명서는 다음 페이지를 참조하세요.
Notebook 시나리오의 경우: Apache Spark에서 대화형 작업용 패키지 관리
Spark 일괄 처리 시나리오의 경우(섹션 6 참조): Apache Spark에서 일괄 처리 작업용 패키지 관리
모든 코드 종속성이 JAR의 Synapse 실행에 포함되어 있는지 확인합니다. 타사 JAR을 사용자 고유의 코드에 포함하지 않거나 포함할 수 없는 경우 모든 종속성이 코드를 실행하는 Spark 풀의 작업 영역 패키지에 포함되어 있는지 또는 Spark 일괄 처리 제출에 대한 "참조 파일" 목록에 포함되어 있는지 확인합니다. 자세한 내용은 위의 설명서를 참조하세요.
Spark_Unknown_Unknown_java.lang.Exception
알 수 없는 오류입니다. 모델을 분류할 수 없습니다.
이 기능이 사용하도록 설정된 경우 문제를 해결하는 방법에 대한 문제 해결 지침과 함께 오류 코드(위에 표시된 목록 이상 포함)가 Synapse Studio 애플리케이션 오류 창에 표시됩니다.
참고 항목
LIVY_JOB_STATE_DEAD
오류 코드를 필터링하여 실패한 작업을 확인하는 Synapse 모니터링 작업을 중심으로 도구를 빌드한 경우 앱이 더 이상 작동하지 않습니다. 위에서 설명한 대로 반환된 오류 코드가 다르기 때문입니다. 이 기능을 활용하도록 스크립트를 적절히 수정하거나, 필요하지 않은 경우 기능을 사용하지 않도록 설정합니다.