Python을 사용하여 Azure Data Lake Analytics 관리Manage Azure Data Lake Analytics using Python

이 문서에서는 Python을 사용하여 Azure Data Lake Analytics 계정, 데이터 원본, 사용자 및 작업을 관리하는 방법을 설명합니다.This article describes how to manage Azure Data Lake Analytics accounts, data sources, users, and jobs by using Python.

지원되는 Python 버전Supported Python versions

  • Python의 64비트 버전을 사용합니다.Use a 64-bit version of Python.
  • Python.org 다운로드 에서 찾을 수 있는 표준 Python 배포를 사용할 수 있습니다.You can use the standard Python distribution found at Python.org downloads.
  • 많은 개발자가 Anaconda Python 배포 를 사용 하는 것이 편리 하다는 것을 알게 되었습니다.Many developers find it convenient to use the Anaconda Python distribution.
  • 이 문서는 표준 Python 배포의 Python 버전 3.6을 사용하여 작성되었습니다.This article was written using Python version 3.6 from the standard Python distribution

Azure Python SDK 설치Install Azure Python SDK

다음 모듈을 설치합니다.Install the following modules:

  • Azure 관리 리소스 모듈에는 Active Directory 등을 위한 다른 azure 모듈이 포함 되어 있습니다.The azure-mgmt-resource module includes other Azure modules for Active Directory, etc.
  • Datalake 모듈은 Azure Data Lake Store filesystem 작업을 포함 합니다.The azure-datalake-store module includes the Azure Data Lake Store filesystem operations.
  • Datalake 모듈에는 Azure Data Lake Store 계정 관리 작업이 포함 되어 있습니다.The azure-mgmt-datalake-store module includes the Azure Data Lake Store account management operations.
  • azure-mgmt-datalake-analytics 모듈에는 Azure Data Lake Analytics 작업이 포함됩니다.The azure-mgmt-datalake-analytics module includes the Azure Data Lake Analytics operations.

먼저 다음 명령을 실행하여 최신 pip가 있는지 확인합니다.First, ensure you have the latest pip by running the following command:

python -m pip install --upgrade pip

이 문서는 pip version 9.0.1을 사용하여 작성되었습니다.This document was written using pip version 9.0.1.

다음 pip 명령을 사용하여 명령줄에서 모듈을 설치합니다.Use the following pip commands to install the modules from the commandline:

pip install azure-mgmt-resource
pip install azure-datalake-store
pip install azure-mgmt-datalake-store
pip install azure-mgmt-datalake-analytics

새 Python 스크립트 만들기Create a new Python script

다음 코드를 스크립트에 붙여 넣습니다.Paste the following code into the script:

# Use this only for Azure AD service-to-service authentication
#from azure.common.credentials import ServicePrincipalCredentials

# Use this only for Azure AD end-user authentication
#from azure.common.credentials import UserPassCredentials

# Required for Azure Resource Manager
from azure.mgmt.resource.resources import ResourceManagementClient
from azure.mgmt.resource.resources.models import ResourceGroup

# Required for Azure Data Lake Store account management
from azure.mgmt.datalake.store import DataLakeStoreAccountManagementClient
from azure.mgmt.datalake.store.models import DataLakeStoreAccount

# Required for Azure Data Lake Store filesystem management
from azure.datalake.store import core, lib, multithread

# Required for Azure Data Lake Analytics account management
from azure.mgmt.datalake.analytics.account import DataLakeAnalyticsAccountManagementClient
from azure.mgmt.datalake.analytics.account.models import DataLakeAnalyticsAccount, DataLakeStoreAccountInformation

# Required for Azure Data Lake Analytics job management
from azure.mgmt.datalake.analytics.job import DataLakeAnalyticsJobManagementClient
from azure.mgmt.datalake.analytics.job.models import JobInformation, JobState, USqlJobProperties

# Required for Azure Data Lake Analytics catalog management
from azure.mgmt.datalake.analytics.catalog import DataLakeAnalyticsCatalogManagementClient

# Use these as needed for your application
import logging
import getpass
import pprint
import uuid
import time

이 스크립트를 실행하여 모듈을 가져올 수 있는지 확인합니다.Run this script to verify that the modules can be imported.

인증Authentication

팝업 항목으로 대화형 사용자 인증Interactive user authentication with a pop-up

이 메서드는 지원되지 않습니다.This method is not supported.

디바이스 코드로 대화형 사용자 인증Interactive user authentication with a device code

user = input(
    'Enter the user to authenticate with that has permission to subscription: ')
password = getpass.getpass()
credentials = UserPassCredentials(user, password)

SPI 및 암호로 비대화형 인증Noninteractive authentication with SPI and a secret

credentials = ServicePrincipalCredentials(
    client_id='FILL-IN-HERE', secret='FILL-IN-HERE', tenant='FILL-IN-HERE')

API 및 인증서로 비대화형 인증Noninteractive authentication with API and a certificate

이 메서드는 지원되지 않습니다.This method is not supported.

일반 스크립트 변수Common script variables

이러한 변수는 샘플에서 사용됩니다.These variables are used in the samples.

subid = '<Azure Subscription ID>'
rg = '<Azure Resource Group Name>'
location = '<Location>'  # i.e. 'eastus2'
adls = '<Azure Data Lake Store Account Name>'
adla = '<Azure Data Lake Analytics Account Name>'

클라이언트 만들기Create the clients

resourceClient = ResourceManagementClient(credentials, subid)
adlaAcctClient = DataLakeAnalyticsAccountManagementClient(credentials, subid)
adlaJobClient = DataLakeAnalyticsJobManagementClient(
    credentials, 'azuredatalakeanalytics.net')

Azure 리소스 그룹 만들기Create an Azure Resource Group

armGroupResult = resourceClient.resource_groups.create_or_update(
    rg, ResourceGroup(location=location))

데이터 레이크 분석 계정 만들기Create Data Lake Analytics account

먼저 저장소 계정을 만듭니다.First create a store account.

adlsAcctResult = adlsAcctClient.account.create(
    rg,
    adls,
    DataLakeStoreAccount(
        location=location)
    )
).wait()

그런 다음 해당 저장소를 사용하는 ADLA 계정을 만듭니다.Then create an ADLA account that uses that store.

adlaAcctResult = adlaAcctClient.account.create(
    rg,
    adla,
    DataLakeAnalyticsAccount(
        location=location,
        default_data_lake_store_account=adls,
        data_lake_store_accounts=[DataLakeStoreAccountInformation(name=adls)]
    )
).wait()

작업 제출Submit a job

script = """
@a  = 
    SELECT * FROM 
        (VALUES
            ("Contoso", 1500.0),
            ("Woodgrove", 2700.0)
        ) AS 
              D( customer, amount );
OUTPUT @a
    TO "/data.csv"
    USING Outputters.Csv();
"""

jobId = str(uuid.uuid4())
jobResult = adlaJobClient.job.create(
    adla,
    jobId,
    JobInformation(
        name='Sample Job',
        type='USql',
        properties=USqlJobProperties(script=script)
    )
)

작업이 종료될 때까지 대기Wait for a job to end

jobResult = adlaJobClient.job.get(adla, jobId)
while(jobResult.state != JobState.ended):
    print('Job is not yet done, waiting for 3 seconds. Current state: ' +
          jobResult.state.value)
    time.sleep(3)
    jobResult = adlaJobClient.job.get(adla, jobId)

print('Job finished with result: ' + jobResult.result.value)

파이프라인 및 되풀이 나열List pipelines and recurrences

작업에 파이프라인 또는 되풀이 메타데이터가 첨부되어 있는지에 따라, 파이프라인 및 되풀이를 나열할 수 있습니다.Depending whether your jobs have pipeline or recurrence metadata attached, you can list pipelines and recurrences.

pipelines = adlaJobClient.pipeline.list(adla)
for p in pipelines:
    print('Pipeline: ' + p.name + ' ' + p.pipelineId)

recurrences = adlaJobClient.recurrence.list(adla)
for r in recurrences:
    print('Recurrence: ' + r.name + ' ' + r.recurrenceId)

컴퓨팅 정책 관리Manage compute policies

DataLakeAnalyticsAccountManagementClient 개체는 Data Lake Analytics 계정에 대한 컴퓨팅 정책을 관리하는 메서드를 제공합니다.The DataLakeAnalyticsAccountManagementClient object provides methods for managing the compute policies for a Data Lake Analytics account.

컴퓨팅 정책 나열List compute policies

다음 코드는 Data Lake Analytics 계정에 대한 컴퓨팅 정책 목록을 검색합니다.The following code retrieves a list of compute policies for a Data Lake Analytics account.

policies = adlaAccountClient.computePolicies.listByAccount(rg, adla)
for p in policies:
    print('Name: ' + p.name + 'Type: ' + p.objectType + 'Max AUs / job: ' +
          p.maxDegreeOfParallelismPerJob + 'Min priority / job: ' + p.minPriorityPerJob)

새 컴퓨팅 정책 만들기Create a new compute policy

다음 코드는 지정된 사용자가 사용할 수 있는 최대 AU를 50으로, 최소 작업 우선 순위를 250으로 설정하는, Data Lake Analytics 계정에 대한 새 컴퓨팅 정책을 만듭니다.The following code creates a new compute policy for a Data Lake Analytics account, setting the maximum AUs available to the specified user to 50, and the minimum job priority to 250.

userAadObjectId = "3b097601-4912-4d41-b9d2-78672fc2acde"
newPolicyParams = ComputePolicyCreateOrUpdateParameters(
    userAadObjectId, "User", 50, 250)
adlaAccountClient.computePolicies.createOrUpdate(
    rg, adla, "GaryMcDaniel", newPolicyParams)

다음 단계Next steps