런타임 변경으로 인한 U-SQL 런타임 오류 문제를 해결하는 방법 알아보기

중요

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

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

컴파일러, 최적화 프로그램 및 작업 관리자를 비롯한 Azure Data Lake U-SQL 런타임은 U-SQL 코드를 처리합니다.

U-SQL 런타임 버전 선택

Visual Studio, ADL SDK 또는 Azure Data Lake Analytics 포털에서 U-SQL 작업을 제출하면 작업은 현재 사용 가능한 기본 런타임을 사용합니다. 새 버전의 U-SQL 런타임은 정기적으로 릴리스되며 사소한 업데이트와 보안 수정 사항을 모두 포함합니다.

사용자 지정 런타임 버전을 선택할 수도 있습니다. 새 업데이트를 시도하고 싶거나, 이전 버전의 런타임을 유지해야 하거나, 정기적인 새 업데이트를 기다릴 수 없는 보고된 문제에 대한 핫픽스를 받았기 때문입니다.

주의

기본값과 다른 런타임을 선택하면 U-SQL 작업이 중단될 수 있습니다. 테스트에만 이러한 다른 버전을 사용합니다.

드물게 Microsoft 지원 다른 버전의 런타임을 계정의 기본값으로 고정할 수 있습니다. 가능한 한 빨리 이 고정을 되돌려야 합니다. 해당 버전에 고정된 상태로 유지되면 나중에 만료됩니다.

작업 U-SQL 런타임 버전 모니터링

Visual Studio의 작업 브라우저 또는 Azure Portal의 작업 기록을 통해 계정의 작업 기록에서 이전 작업이 사용한 런타임 버전 기록을 볼 수 있습니다.

  1. Azure Portal에서 Data Lake Analytics 계정으로 이동합니다.
  2. 모든 작업 보기를 선택합니다. 계정의 모든 활성 작업 및 최근에 완료된 작업 목록이 표시됩니다.
  3. 필요에 따라 필터를 선택하여 시간 범위, 작업 이름, 작성자 값을 기준으로 작업을 찾을 수 있습니다.
  4. 완료된 작업에 사용된 런타임을 볼 수 있습니다.

이전 작업의 런타임 버전 표시

사용 가능한 런타임 버전은 시간이 지남에 따라 변경됩니다. 기본 런타임은 항상 “기본”이라고 하며 일정 시간 동안 적어도 이전 런타임을 유지하고 다양한 이유로 특수 런타임을 사용할 수 있도록 합니다. 명시적으로 명명된 런타임은 일반적으로 다음 형식을 따릅니다(기울임꼴은 변수 부분에 사용되며 []는 선택적 부분을 나타냄).

release_YYYYMMDD_adl_buildno[_modifier]

예를 들어 release_20190318_adl_3394512_2는 2019년 3월 18일 런타임 릴리스의 빌드 3394512의 두 번째 버전을 의미하고 release_20190318_adl_3394512_private는 동일한 릴리스의 프라이빗 빌드를 의미합니다. 참고: 날짜는 해당 릴리스에 대한 마지막 체크 인이 수행된 날짜와 관련이 있으며 반드시 공식 릴리스 날짜가 아닐 수도 있습니다.

U-SQL 런타임 버전 문제 해결

다음과 같은 두 가지 런타임 버전 문제가 발생할 수 있습니다.

  1. 스크립트 또는 일부 사용자 코드는 한 릴리스에서 다음 릴리스로 동작을 변경합니다. 이러한 호환성이 손상되는 변경 내용은 일반적으로 릴리스 정보 게시와 함께 미리 전달됩니다. 이러한 호환성이 손상되는 변경이 발생하면 Microsoft 지원에 문의하여 이 호환성이 손상되는 변경을 보고하고(아직 문서화되지 않은 경우) 이전 런타임 버전에 대해 작업을 제출하세요.

  2. 계정에 고정된 경우 명시적 또는 암시적으로 비기본 런타임을 사용했으며 일정 시간 후에 해당 런타임이 제거되었습니다. 런타임이 누락된 경우 스크립트를 업그레이드하여 현재 기본 런타임으로 실행합니다. 추가 시간이 필요한 경우 Microsoft 지원에 문의하세요.

알려진 문제

  1. USQL 스크립트에서 Newtonsoft.Json 파일 버전 12.0.3 이상을 참조하면 다음과 같은 컴파일 오류가 발생합니다.

    "죄송합니다. Data Lake Analytics 계정에서 실행 중인 작업이 더 느리게 실행되거나 완료되지 않을 수 있습니다. 예기치 않은 문제로 인해 이 기능을 Azure Data Lake Analytics 계정에 자동으로 복원할 수 없습니다. 조사를 위해 Azure Data Lake 엔지니어에게 문의했습니다."

    호출 스택에 포함될 위치:
    System.IndexOutOfRangeException: Index was outside the bounds of the array.
    at Roslyn.Compilers.MetadataReader.PEFile.CustomAttributeTableReader.get_Item(UInt32 rowId)
    ...

    해결 방법: Newtonsoft.Json 파일 v12.0.2 이하를 사용합니다.

  2. 고객은 저장소에서 임시 파일 및 폴더를 볼 수 있습니다. 이러한 작업은 일반적인 작업 실행의 일부로 생성되지만 일반적으로 고객이 보기 전에 삭제됩니다. 드물고 무작위인 특정 상황에서는 계속 표시될 수 있습니다. 이러한 임시 파일 및 폴더는 결국 삭제되고 사용자 스토리지의 일부로 계산되지 않으며 어떠한 형태의 요금도 생성하지 않습니다. 고객의 작업 논리에 따라 문제가 발생할 수 있습니다. 예를 들어 작업이 폴더의 모든 파일을 열거한 후 파일 목록을 비교하는 경우 예기치 않은 임시 파일이 존재하기 때문에 작업이 실패할 수 있습니다. 마찬가지로 다운스트림 작업이 추가 처리를 위해 지정된 폴더의 모든 파일을 열거하는 경우 임시 파일을 열거할 수도 있습니다.

    해결 방법: 임시 파일이 현재 출력 폴더가 아닌 계정 수준 임시 폴더에 저장되는 런타임에서 수정 사항이 식별됩니다. 임시 파일은 이 새 임시 폴더에 기록되며 작업 실행이 끝날 때 삭제됩니다.
    이 수정 사항은 고객 데이터를 처리하므로 릴리스하기 전에 MSFT 내에서 이 수정 사항의 유효성을 제대로 검사하는 것이 중요합니다. 이 수정 사항은 2021년 중반에 베타 런타임으로, 2021년 하반기에는 기본 런타임으로 제공될 예정입니다.

참고 항목