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를 초과할 수 없습니다.