Gerenciar o Azure Data Lake Analytics usando o PythonManage Azure Data Lake Analytics using Python

Este artigo descreve como gerenciar contas, fontes de dados, usuários e trabalhos do Azure Data Lake Analytics usando o Python.This article describes how to manage Azure Data Lake Analytics accounts, data sources, users, and jobs by using Python.

Versões do Python compatíveisSupported Python versions

  • Use uma versão de 64 bits do Python.Use a 64-bit version of Python.
  • Você pode usar a distribuição padrão do Python encontrada nos downloads do Python.org .You can use the standard Python distribution found at Python.org downloads.
  • Muitos desenvolvedores consideram conveniente usar a Distribuição do Anaconda Python .Many developers find it convenient to use the Anaconda Python distribution.
  • Este artigo foi escrito usando o Python versão 3.6 da distribuição padrão do PythonThis article was written using Python version 3.6 from the standard Python distribution

Instalar o SDK do Python do AzureInstall Azure Python SDK

Instale os seguintes módulos:Install the following modules:

  • O módulo azure-mgmt-resource inclui outros módulos do Azure para o Active Directory, etc.The azure-mgmt-resource module includes other Azure modules for Active Directory, etc.
  • O módulo azure-datalake-store inclui as operações de sistema de arquivos do Azure Data Lake Store.The azure-datalake-store module includes the Azure Data Lake Store filesystem operations.
  • O módulo azure-mgmt-datalake-store inclui as operações de gerenciamento de contas do Azure Data Lake Store.The azure-mgmt-datalake-store module includes the Azure Data Lake Store account management operations.
  • O módulo azure-mgmt-datalake-analytics inclui as operações do Azure Data Lake Analytics.The azure-mgmt-datalake-analytics module includes the Azure Data Lake Analytics operations.

Primeiro, verifique se você tem a versão mais recente do pip, executando o seguinte comando:First, ensure you have the latest pip by running the following command:

python -m pip install --upgrade pip

Este documento foi escrito usando pip version 9.0.1.This document was written using pip version 9.0.1.

Use os seguintes comandos pip para instalar os módulos de linha de comando: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

Criar um novo script do PythonCreate a new Python script

Cole o seguinte código no 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

Execute este script para verificar se os módulos podem ser importados.Run this script to verify that the modules can be imported.

AutenticaçãoAuthentication

Autenticação de usuário interativo com um pop-upInteractive user authentication with a pop-up

Não há suporte para esse método.This method is not supported.

Autenticação de usuário interativo com um código de dispositivoInteractive 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)

Autenticação não interativa com SPI e um segredoNoninteractive authentication with SPI and a secret

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

Autenticação não interativa com API e um certificadoNoninteractive authentication with API and a certificate

Não há suporte para esse método.This method is not supported.

Variáveis do script comumCommon script variables

Essas variáveis são usadas nos exemplos.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>'

Criar os clientesCreate the clients

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

Criar um grupo de recursos do AzureCreate an Azure Resource Group

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

Criar conta da Análise Data LakeCreate Data Lake Analytics account

Primeiro, crie uma conta de repositório.First create a store account.

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

Em seguida, crie uma conta do ADLA que usará o repositório.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()

Enviar um trabalhoSubmit 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)
    )
)

Aguarde até que um trabalho seja encerradoWait 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)

Listar pipelines e recorrênciasList pipelines and recurrences

Dependendo se os trabalhos tiverem metadados de pipeline ou de recorrência anexados, você poderá listar os pipelines e as recorrências.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)

Gerenciar políticas de computaçãoManage compute policies

O objeto DataLakeAnalyticsAccountManagementClient fornece métodos para gerenciar as políticas de computação para uma conta do Data Lake Analytics.The DataLakeAnalyticsAccountManagementClient object provides methods for managing the compute policies for a Data Lake Analytics account.

Listar políticas de computaçãoList compute policies

O código a seguir recupera uma lista de políticas de computação para uma conta do 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)

Criar uma nova política de computaçãoCreate a new compute policy

O código a seguir cria uma nova política de computação para uma conta do Data Lake Analytics, definindo a quantidade máxima de AUs disponíveis para o usuário especificado como 50 e a prioridade mínima de trabalho como 250.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)

Próximas etapasNext steps