Azure Data Lake Analytics에서 Python 코드로 U-SQL 스크립트 확장

중요

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

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

필수 구성 요소

시작하기 전에 Azure Data Lake Analytics 계정에 Python 확장이 설치되어 있는지 확인하세요.

  • Azure Portal에서 Data Lake Analytics 계정으로 이동합니다.
  • 왼쪽 메뉴의 시작에서 샘플 스크립트를 선택합니다.
  • U-SQL 확장 설치를 선택한 다음 확인을 선택합니다.

개요

U-SQL용 Python 확장을 사용하면 개발자가 Python 코드를 대량으로 병렬 실행할 수 있습니다. 다음 예제에서는 기본 단계를 설명합니다.

  • REFERENCE ASSEMBLY 문을 사용하여 U-SQL 스크립트에 대한 Python 확장을 사용하도록 설정합니다.
  • REDUCE 연산을 사용하여 키의 입력 데이터 분할
  • U-SQL용 Python 확장에는 감속기에 할당된 각 꼭짓점에서 Python 코드를 실행하는 기본 제공 감속기(Extension.Python.Reducer)가 포함되어 있습니다
  • U-SQL 스크립트에는 pandas DataFrame을 입력으로 받아들이고 pandas DataFrame을 출력으로 반환하는 usqlml_main이라는 함수가 있는 포함된 Python 코드가 포함되어 있습니다.
REFERENCE ASSEMBLY [ExtPython];
DECLARE @myScript = @"
def get_mentions(tweet):
    return ';'.join( ( w[1:] for w in tweet.split() if w[0]=='@' ) )
def usqlml_main(df):
    del df['time']
    del df['author']
    df['mentions'] = df.tweet.apply(get_mentions)
    del df['tweet']
    return df
";
@t  =
    SELECT * FROM
       (VALUES
           ("D1","T1","A1","@foo Hello World @bar"),
           ("D2","T2","A2","@baz Hello World @beer")
       ) AS date, time, author, tweet );
@m  =
    REDUCE @t ON date
    PRODUCE date string, mentions string
    USING new Extension.Python.Reducer(pyScript:@myScript);
OUTPUT @m
    TO "/tweetmentions.csv"
    USING Outputters.Csv();

Python과 U-SQL 통합 방법

데이터 형식

  • U-SQL의 문자열 및 숫자 열은 Pandas와 U-SQL 간에 있는 그대로 변환됩니다.
  • U-SQL Null은 Pandas NA 값으로 변환됩니다.

스키마

  • Pandas의 인덱스 벡터는 U-SQL에서 지원되지 않습니다. Python 함수의 모든 입력 데이터 프레임에는 항상 0부터 시작하여 행 수에서 1을 뺀 인덱스까지 64비트의 숫자 인덱스가 있습니다.
  • U-SQL 데이터 세트는 중복 열 이름을 가질 수 없습니다.
  • 문자열이 아닌 U-SQL 데이터 세트 열 이름입니다.

Python 버전

Python 3.5.1(Windows용으로 컴파일)만 지원됩니다.

표준 Python 모듈

표준 Python 모듈이 모두 포함되어 있습니다.

더 많은 Python 모듈

표준 Python 라이브러리 외에도 일반적으로 사용되는 몇 가지 Python 라이브러리가 포함되어 있습니다.

  • pandas
  • numpy
  • numexpr

예외 메시지

현재 Python 코드의 예외는 일반적인 정점 오류로 나타납니다. 앞으로 U-SQL 작업 오류 메시지는 Python 예외 메시지를 표시합니다.

입력 및 출력 크기 제한

모든 정점에는 할당되는 메모리 양이 제한되어 있습니다. 현재 이 제한은 AU의 경우 6GB입니다. 입력 및 출력 DataFrames는 Python 코드의 메모리에 있어야 하므로 입력 및 출력의 총 크기는 6GB를 초과할 수 없습니다.

다음 단계