다음을 통해 공유


Synapse Analytics의 오류 코드 해석

오늘날 Azure Synapse Analytics에서 Spark 애플리케이션이 실패하는 이유를 설명할 수 있는 많은 요인이 있습니다. 예를 들어 시스템 오류 또는 사용자 관련 오류로 인한 것일 수 있습니다. 이전에는 Synapse Analytics의 실패한 작업에 해당하는 모든 오류가 LIVY_JOB_STATE_DEAD를 표시하는 일반 오류 코드로 표시되었습니다. 이 오류 코드는 작업이 실패한 이유에 대한 추가 인사이트를 제공하지 않았습니다. 드라이버, 실행기, Spark 이벤트, Livy 로그를 자세히 파악하여 근본 원인을 식별하고 해결 방법을 찾는 데 많이 노력해야 합니다.

Screenshot of Apache Spark error code without detailed message.

이전의 일반 메시지를 대체하는 더 정확한 오류 코드 목록이 도입되었습니다. 새 메시지는 실패 원인을 설명합니다. Azure Synapse Analytics에서 작업이 실패할 때마다 오류 처리 기능은 백 엔드의 로그를 구문 분석하고 확인하여 근본 원인을 식별합니다. 그런 다음, 모니터링 창에서 사용자에게 문제를 해결하는 단계와 함께 메시지를 표시합니다.

Screenshot of Apache Spark error code with detailed message.

Synapse에서 오류 분류 사용

다음 Spark 구성을 작업 또는 풀 수준에서 true 또는 false로 설정하여 오류 분류 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다.

livy.rsc.synapse.error-classification.enabled

다음 섹션에는 현재 지원되는 몇 가지 오류 유형이 나와 있습니다. 우리는 모델을 개선하여 이러한 오류 코드를 지속적으로 개선하고 추가하고 있습니다.

오류 코드 범주

각 오류 코드는 다음 4가지 버킷 중 하나에 속합니다.

  1. 사용자 - 사용자 오류 표시
  2. 시스템 - 시스템 오류 표시
  3. 모호함 - 사용자 또는 시스템 오류일 수 있음
  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 모니터링 작업을 중심으로 도구를 빌드한 경우 앱이 더 이상 작동하지 않습니다. 위에서 설명한 대로 반환된 오류 코드가 다르기 때문입니다. 이 기능을 활용하도록 스크립트를 적절히 수정하거나, 필요하지 않은 경우 기능을 사용하지 않도록 설정합니다.