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-mgmt-resource モジュールには、Active Directory 用のその他の Azure モジュールなどが含まれています。The azure-mgmt-resource module includes other Azure modules for Active Directory, etc.
  • azure-datalake-store モジュールには、Azure Data Lake Store ファイル システム操作が含まれています。The azure-datalake-store module includes the Azure Data Lake Store filesystem operations.
  • azure-mgmt-datalake-store モジュールには、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.

AuthenticationAuthentication

ポップアップを使用した対話型ユーザー認証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))

Data Lake Analytics アカウントを作成する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

次のコードは、Data Lake Analytics アカウントの新しいコンピューティング ポリシーを作成し、指定したユーザーが使用できる最大 AU を 50 に、最小ジョブ優先順位を 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)

次の手順Next steps