실패한 U-SQL 작업에 대한 사용자 정의 C# 코드 디버그

중요

Azure Data Lake Analytics 2024년 2월 29일에 사용 중지되었습니다. 이 공지 사항을 통해 자세히 알아봅니다.

데이터 분석의 경우 organization Azure Synapse Analytics 또는 Microsoft Fabric을 사용할 수 있습니다.

U-SQL은 C#을 사용하는 확장성 모델을 제공합니다. U-SQL 스크립트에서는 간단하게 C# 함수를 호출하고 선언적 SQL 유사 언어를 지원하지 않는 분석 기능을 수행할 수 있습니다. U-SQL 확장성에 대한 자세한 내용은 U-SQL 프로그래밍 기능 가이드를 참조하세요.

실제로 모든 코드는 디버깅이 필요할 수 있지만 제한된 로그 파일이 있는 클라우드의 사용자 지정 코드를 사용하여 분산 작업을 디버그하기는 어렵습니다. Azure Data Lake Tools for Visual Studio실패한 꼭짓점 디버그라는 기능을 제공합니다. 이를 통해 사용자 지정 코드에서 발생한 실패를 간단하게 디버그할 수 있습니다. U-SQL 작업에 실패하면 서비스는 오류 상태를 유지하며 해당 도구를 통해 클라우드 오류 환경을 디버깅할 로컬 컴퓨터에 다운로드할 수 있습니다. 로컬 다운로드는 모든 입력 데이터와 사용자 코드를 비롯한 전체 클라우드 환경을 캡처합니다.

다음 비디오에서는 Azure Data Lake Tools for Visual Studio의 실패한 꼭짓점 디버그를 보여 줍니다.

중요

이 기능을 사용하기 위해 Visual Studio에는 Microsoft Visual C++ 2015 재배포 가능 업데이트 3Windows용 유니버설 C 런타임이라는 두 업데이트가 필요합니다.

로컬 컴퓨터에 실패한 꼭짓점 다운로드

Azure Data Lake Tools for Visual Studio에서 실패한 작업을 열면 오류 탭에 자세한 오류 메시지가 있는 노란 경고 막대를 볼 수 있습니다.

  1. 다운로드를 선택하여 모든 필수 리소스 및 입력 스트림을 다운로드합니다. 다운로드가 완료되지 않으면 다시 시도를 선택합니다.

  2. 다운로드가 완료되면 열기를 선택하여 로컬 디버깅 환경을 생성합니다. 새 디버깅 솔루션이 공개될 예정이며, Visual Studio에서 기존 솔루션을 연 경우에는 디버깅하기 전에 저장했는지 확인하고 닫아야 합니다.

다운로드 단추가 강조 표시된 USQL의 Data Lake Analytics 작업 스크린샷

디버깅 환경 구성

참고

디버깅 전에 예외 설정 창(Ctrl + Alt + E)에서 공용 언어 런타임 예외를 선택했는지 확인해야 합니다.

공용 언어 런타임 예외가 설정된 예외 설정을 보여 주는 사용자 정의 C# 소스 코드의 스크린샷

새로 시작된 Visual Studio instance 사용자 정의 C# 소스 코드를 찾을 수도 있고 찾지 못할 수도 있습니다.

  1. 솔루션에서 소스 코드를 찾을 수 있습니다.

  2. 솔루션에서 소스 코드를 찾을 수 없습니다.

소스 코드는 솔루션 디버깅에 포함됩니다.

C# 소스 코드가 캡처되는 두 가지 경우가 있습니다.

  1. 사용자 코드는 코드 숨김 파일에 정의됩니다(일반적으로 U-SQL 프로젝트에서 Script.usql.cs라고 명명).

  2. 사용자 코드는 U-SQL 애플리케이션의 C# 클래스 라이브러리 프로젝트에서 정의되고 디버그 정보를 포함하는 어셈블리로 등록됩니다.

소스 코드를 솔루션에 가져오는 경우 Visual Studio 디버깅 도구(조사식, 변수 등)를 사용하여 문제를 해결할 수 있습니다.

  1. F5 키를 눌러 디버깅을 시작합니다. 코드는 예외로 인해 중지될 때까지 실행됩니다.

  2. 소스 코드 파일을 열고 중단점을 설정한 후 F5 키를 눌러 단계별로 코드를 디버그합니다.

    강조 표시된 줄에서 예외를 보여 주는 중단점 집합이 있는 사용자 정의 코드의 스크린샷

소스 코드가 디버깅 솔루션에 포함되지 않음

사용자 코드가 코드 숨김 파일에 포함되어 있지 않거나 디버그 정보를 포함하는 어셈블리를 등록하지 않은 경우 소스 코드는 디버깅 솔루션에 자동으로 포함되지 않습니다. 이 경우에 소스 코드를 추가하는 추가 단계가 필요합니다.

  1. 솔루션 'VertexDebug' > 추가 > 기존 프로젝트...를 마우스 오른쪽 단추로 클릭하여 어셈블리 소스 코드를 찾고 프로젝트를 디버깅 솔루션에 추가합니다.

    VertexDebug 솔루션을 보여 주는 Visual Studio의 솔루션 탐색기 스크린샷

  2. FailedVertexDebugHost 프로젝트에 프로젝트 폴더 경로를 가져옵니다.

  3. 추가된 어셈블리 소스 코드 프로젝트 > 속성을 마우스 오른쪽 단추로 클릭하고, 왼쪽의 빌드 탭을 선택하고, \bin\debug로 끝나는 복사된 경로를 출력 > 출력 경로에 붙여넣습니다. 최종 출력 경로는 <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\와 유사합니다.

    출력 아래에 아웃바운드 경로가 강조 표시된 Visual Studio Code 빌드 탭의 스크린샷

이러한 설정 이후에 F5 키 및 중단점을 사용하여 디버깅을 시작합니다. Visual Studio 디버깅 도구(조사식, 변수 등)를 사용하여 문제를 해결할 수도 있습니다.

참고

업데이트된 .pdb 파일을 생성하기 위해 코드를 수정한 후 매번 어셈블리 소스 코드 프로젝트를 다시 빌드합니다.

작업 다시 제출

디버깅 후 프로젝트가 성공적으로 완료되면 출력 창에 다음 메시지가 표시됩니다.

The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).

완성선이 강조 표시된 출력 창의 스크린샷

실패한 작업을 다시 제출하려면:

  1. 코드 숨김 솔루션이 있는 작업의 경우 C# 코드를 코드 숨김 원본 파일(대개 Script.usql.cs)로 복사합니다.

  2. 어셈블리를 포함한 작업의 경우 디버깅 솔루션에서 어셈블리 소스 코드 프로젝트를 마우스 오른쪽 단추로 클릭하고 업데이트된 .dll 어셈블리를 Azure Data Lake 카탈로그에 등록합니다.

  3. U-SQL 작업을 다시 제출합니다.

다음 단계