다음을 통해 공유


Azure Data Factory 및 Synapse Analytics를 사용하여 Azure Data Lake Analytics U-SQL 스크립트를 실행하여 데이터 처리

적용 대상: Azure Data Factory Azure Synapse Analytics

Microsoft Fabric의 데이터 팩토리는 더 간단한 아키텍처, 기본 제공 AI 및 새로운 기능을 갖춘 차세대 Azure 데이터 팩토리입니다. 데이터 통합을 접하는 경우 Fabric Data Factory부터 시작합니다. 기존 ADF 워크로드는 Fabric 업그레이드하여 데이터 과학, 실시간 분석 및 보고 전반에 걸쳐 새로운 기능에 액세스할 수 있습니다.

Azure Data Factory 또는 Synapse Analytics 작업 영역의 파이프라인은 연결된 컴퓨팅 서비스를 사용하여 연결된 스토리지 서비스의 데이터를 처리합니다. 일련의 작업이 포함되어 있으며, 각 작업은 특정 처리 작업을 실행합니다. 이 문서에서는 U-SQL 스크립트를 Azure Data Lake Analytics 컴퓨팅 연결 서비스에서 실행하는 Data Lake Analytics U-SQL 작업을 설명합니다.

Data Lake Analytics U-SQL 작업을 사용하여 파이프라인을 만들기 전에 Azure Data Lake Analytics 계정을 만듭니다. Azure Data Lake Analytics에 대한 자세한 내용은 Azure Data Lake Analytics 시작하기를 참조하세요.

UI를 사용하여 파이프라인에 Azure Data Lake Analytics U-SQL 작업 추가

파이프라인에서 Azure Data Lake Analytics U-SQL 작업을 사용하려면 다음 단계를 완료합니다.

  1. 파이프라인 활동 창에서 데이터 레이크 검색하고 U-SQL 작업을 파이프라인 캔버스로 끌어옵니다.

  2. 아직 선택되지 않은 경우 캔버스에서 새 U-SQL 작업을 선택합니다.

  3. ADLA 계정 탭을 선택하여 U-SQL 작업을 실행하는 데 사용할 새 Azure Data Lake Analytics 연결된 서비스를 선택하거나 만듭니다.

    U-SQL 작업에 대한 UI 표시

  4. 스크립트 탭을 선택하여 새 스토리지 연결된 서비스 및 스크립트를 호스트할 스토리지 위치 내의 경로를 선택하거나 만듭니다.

    U-SQL 작업의 스크립트 탭에 대한 UI 표시

연결된 서비스 Azure Data Lake Analytics

Azure Data Lake Analytics 컴퓨팅 서비스를 Azure Data Factory 또는 Synapse Analytics 작업 영역에 연결하는 Azure Data Lake Analytics 연결된 서비스를 만듭니다. 파이프라인의 Data Lake Analytics U-SQL 작업은 이 연결된 서비스를 참조합니다.

다음 표에는 JSON 정의에서 사용하는 일반 속성에 대한 설명이 나와 있습니다.

속성 설명 필수
유형 type 속성은 AzureDataLakeAnalytics로 설정해야 합니다.
accountName Azure Data Lake Analytics 계정 이름입니다.
dataLakeAnalyticsUri Azure Data Lake Analytics URI입니다. 아니요
subscriptionId Azure 구독 ID 아니요
resourceGroupName 리소스 그룹 이름 Azure 아니요

서비스 주체 인증

Azure Data Lake Analytics 연결된 서비스에는 Azure Data Lake Analytics 서비스에 연결하려면 서비스 주체 인증이 필요합니다. 서비스 주체 인증을 사용하려면, Microsoft Entra ID에 애플리케이션 엔터티를 등록하고, 애플리케이션이 사용하는 Data Lake Analytics 및 데이터 레이크 스토어에 대한 액세스 권한을 부여해야 합니다. 자세한 단계는 서비스 간 인증을 참조하세요. 연결된 서비스를 정의하는 데 사용되므로 다음 값을 적어둡니다.

  • 애플리케이션 ID
  • 애플리케이션 키
  • 테넌트 ID

사용자 추가 마법사를 사용하여 Azure Data Lake Analytics에 서비스 주체 권한을 부여합니다.

다음 속성을 지정하여 서비스 주체 인증을 사용합니다.

속성 설명 필수
servicePrincipalId 애플리케이션의 클라이언트 ID를 지정합니다.
servicePrincipalKey 애플리케이션의 키를 지정합니다.
테넌트 애플리케이션이 있는 테넌트 정보(도메인 이름 또는 테넌트 ID)를 지정합니다. Azure 포털의 오른쪽 위 모서리에 마우스를 가져가서 검색할 수 있습니다.

예제: 서비스 주체 인증

{
    "name": "AzureDataLakeAnalyticsLinkedService",
    "properties": {
        "type": "AzureDataLakeAnalytics",
        "typeProperties": {
            "accountName": "<account name>",
            "dataLakeAnalyticsUri": "<azure data lake analytics URI>",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "value": "<service principal key>",
                "type": "SecureString"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<optional, subscription id of ADLA>",
            "resourceGroupName": "<optional, resource group name of ADLA>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }       
    }
}

연결된 서비스에 대한 자세한 내용은 컴퓨팅 연결 서비스 문서를 참조하세요.

Data Lake Analytics U-SQL 작업

다음 JSON 코드 조각은 Data Lake Analytics U-SQL 작업을 사용하여 파이프라인을 정의합니다. 활동 정의에는 이전에 만든 Azure Data Lake Analytics 연결된 서비스에 대한 참조가 있습니다. Data Lake Analytics U-SQL 스크립트를 실행하기 위해 서비스는 지정한 스크립트를 Data Lake Analytics 제출하고, Data Lake Analytics 가져오고 출력하는 데 필요한 입력 및 출력이 스크립트에 정의됩니다.

{
    "name": "ADLA U-SQL Activity",
    "description": "description",
    "type": "DataLakeAnalyticsU-SQL",
    "linkedServiceName": {
        "referenceName": "<linked service name of Azure Data Lake Analytics>",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "scriptLinkedService": {
            "referenceName": "<linked service name of Azure Data Lake Store or Azure Storage which contains the U-SQL script>",
            "type": "LinkedServiceReference"
        },
        "scriptPath": "scripts\\kona\\SearchLogProcessing.txt",
        "degreeOfParallelism": 3,
        "priority": 100,
        "parameters": {
            "in": "/datalake/input/SearchLog.tsv",
            "out": "/datalake/output/Result.tsv"
        }
    }   
}

다음 표에는 이 작업과 관련된 속성 이름과 설명이 나와 있습니다.

속성 설명 필수
이름 파이프라인의 작업 이름입니다.
설명 작업이 어떤 일을 수행하는지 설명하는 텍스트입니다. 아니요
종류 Data Lake Analytics U-SQL 작업의 경우 활동 유형은 DataLakeAnalyticsU-SQL입니다.
연결된서비스명 Azure Data Lake Analytics 연결된 서비스입니다. 이 연결된 서비스에 대한 자세한 내용은 컴퓨팅 연결 서비스 문서를 참조하세요.
스크립트 경로 U-SQL 스크립트가 포함된 폴더 경로입니다. 파일 이름은 대/소문자를 구분합니다.
scriptLinkedService 스크립트가 포함된 Azure 데이터 레이크 Store 또는 Azure Storage 연결하는 연결된 서비스
병렬성의 정도 작업을 실행하는 데 동시에 사용되는 최대 노드 수입니다. 아니요
우선순위 대기열에 있는 모든 작업 중에서 먼저 실행해야 하는 작업을 결정합니다. 번호가 낮을수록 우선 순위가 높습니다. 아니요
매개 변수 U-SQL 스크립트에 전달할 매개 변수입니다. 아니요
runtimeVersion 사용할 U-SQL 엔진의 런타임 버전입니다. 아니요
컴파일 모드

U-SQL의 컴파일 모드 다음과 같은 값 중 하나여야 합니다. 의미 체계: 의미 체계 확인 및 필요한 온전성 검사만을 수행합니다 전체: 구문 검사, 최적화, 코드 생성 등을 비롯하여 전체 컴파일을 수행합니다. SingleBox: SingleBox에 TargetType 설정을 사용하여 전체 컴파일을 수행합니다. 이 속성에 대한 값을 지정하지 않으면 서버가 최적의 컴파일 모드를 결정합니다.

아니요

스크립트 정의에 대해서는 SearchLogProcessing.txt를 참조하세요.

샘플 U-SQL 스크립트

@searchlog =
    EXTRACT UserId          int,
            Start           DateTime,
            Region          string,
            Query           string,
            Duration        int,
            Urls            string,
            ClickedUrls     string
    FROM @in
    USING Extractors.Tsv(nullEscape:"#NULL#");

@rs1 =
    SELECT Start, Region, Duration
    FROM @searchlog
WHERE Region == "en-gb";

@rs1 =
    SELECT Start, Region, Duration
    FROM @rs1
    WHERE Start <= DateTime.Parse("2012/02/19");

OUTPUT @rs1   
    TO @out
      USING Outputters.Tsv(quoting:false, dateTimeFormat:null);

위의 스크립트 예제에서 스크립트에 대한 입력 및 출력은 @in@out 매개 변수에서 정의됩니다. U-SQL 스크립트의 @in@out 매개 변수 값은 서비스가 ‘parameters’ 섹션을 사용하여 동적으로 전달합니다.

degreeOfParallelism 및 우선 순위와 같은 다른 속성은 물론 Azure Data Lake Analytics 서비스에서 실행되는 작업에 대한 파이프라인 정의에서도 지정할 수 있습니다.

동적 매개 변수

샘플 파이프라인 정의에서 in 및 out 매개 변수는 하드 코드된 값으로 할당됩니다.

"parameters": {
    "in": "/datalake/input/SearchLog.tsv",
    "out": "/datalake/output/Result.tsv"
}

동적 매개 변수를 대신 사용할 수 있습니다. 예시:

"parameters": {
    "in": "/datalake/input/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/data.tsv",
    "out": "/datalake/output/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/result.tsv"
}

이 경우 입력 파일은 여전히 /datalake/input 폴더에서 가져오며 출력 파일은 /datalake/output 폴더에 생성됩니다. 파일 이름은 파이프라인이 트리거될 때 전달되는 창 시작 시간을 기준으로 동적입니다.

다른 방법으로 데이터를 변환하는 방법을 설명하는 다음 문서를 참조하세요.