Azure PowerShell を使用する Azure Data Lake Analytics の管理Manage Azure Data Lake Analytics using Azure PowerShell

この記事では、Azure PowerShell を使用して、Azure Data Lake Analytics のアカウント、データ ソース、ユーザー、およびジョブを管理する方法について説明します。This article describes how to manage Azure Data Lake Analytics accounts, data sources, users, and jobs by using Azure PowerShell.

前提条件Prerequisites

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. インストール手順については、Azure PowerShell のインストール を参照してください。For installation instructions, see Install Azure PowerShell.

Data Lake Analytics で PowerShell を使用するには、次の情報を収集します。To use PowerShell with Data Lake Analytics, collect the following pieces of information:

  • サブスクリプション ID:Data Lake Analytics アカウントを含む Azure サブスクリプションの ID。Subscription ID: The ID of the Azure subscription that contains your Data Lake Analytics account.
  • [リソース グループ]:Data Lake Analytics アカウントが含まれている Azure リソース グループの名前。Resource group: The name of the Azure resource group that contains your Data Lake Analytics account.
  • Data Lake Analytics アカウント名:Data Lake Analytics アカウントの名前。Data Lake Analytics account name: The name of your Data Lake Analytics account.
  • 既定の Data Lake Store アカウント名:各 Data Lake Analytics アカウントには、既定の Data Lake Store アカウントがあります。Default Data Lake Store account name: Each Data Lake Analytics account has a default Data Lake Store account.
  • [場所]:Data Lake Analytics アカウントの場所。"米国東部 2" やサポートされているその他の場所です。Location: The location of your Data Lake Analytics account, such as "East US 2" or other supported locations.

このチュートリアルの PowerShell スニペットでは、以下の変数を使って各情報を格納します。The PowerShell snippets in this tutorial use these variables to store this information

$subId = "<SubscriptionId>"
$rg = "<ResourceGroupName>"
$adla = "<DataLakeAnalyticsAccountName>"
$adls = "<DataLakeStoreAccountName>"
$location = "<Location>"

Azure にログインするLog in to Azure

対話型ユーザー認証を使用したログインLog in using interactive user authentication

サブスクリプション ID またはサブスクリプション名を使用してログインします。Log in using a subscription ID or by subscription name

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname 

認証コンテキストの保存Saving authentication context

Connect-AzAccount コマンドレットは、常に資格情報を要求します。The Connect-AzAccount cmdlet always prompts for credentials. 次のコマンドレットを使用すると、要求を回避できます。You can avoid being prompted by using the following cmdlets:

# Save login session information
Save-AzAccounts -Path D:\profile.json  

# Load login session information
Select-AzAccounts -Path D:\profile.json 

サービス プリンシパル ID (SPI) を使用したログインLog in using a Service Principal Identity (SPI)

$tenantid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"  
$spi_appname = "appname" 
$spi_appid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" 
$spi_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 

$pscredential = New-Object System.Management.Automation.PSCredential ($spi_appid, (ConvertTo-SecureString $spi_secret -AsPlainText -Force))
Login-AzAccount -ServicePrincipal -TenantId $tenantid -Credential $pscredential -Subscription $subid

[アカウントの管理]Manage accounts

アカウントの一覧表示List accounts

# List Data Lake Analytics accounts within the current subscription.
Get-AdlAnalyticsAccount

# List Data Lake Analytics accounts within a specific resource group.
Get-AdlAnalyticsAccount -ResourceGroupName $rg

アカウントの作成Create an account

すべての Data Lake Analytics アカウントに、ログの保存を目的とした既定の Data Lake Store アカウントが必要です。Every Data Lake Analytics account requires a default Data Lake Store account that it uses for storing logs. 既存のアカウントを利用することも、アカウントを作成することもできます。You can reuse an existing account or create an account.

# Create a data lake store if needed, or you can re-use an existing one
New-AdlStore -ResourceGroupName $rg -Name $adls -Location $location
New-AdlAnalyticsAccount -ResourceGroupName $rg -Name $adla -Location $location -DefaultDataLake $adls

アカウント情報の取得Get account information

アカウントの詳細を取得します。Get details about an account.

Get-AdlAnalyticsAccount -Name $adla

アカウントが存在するかどうかを確認するCheck if an account exists

Test-AdlAnalyticsAccount -Name $adla

データ ソースを管理するManage data sources

Azure Data Lake Analytics では現在、以下のデータ ソースがサポートされています。Azure Data Lake Analytics currently supports the following data sources:

すべての Data Lake Analytics アカウントには、既定の Data Lake Store アカウントがあります。Every Data Lake Analytics account has a default Data Lake Store account. 既定の Data Lake Store アカウントは、ジョブ メタデータとジョブ監査ログの格納に使用されます。The default Data Lake Store account is used to store job metadata and job audit logs.

既定の Data Lake Store アカウントの検索Find the default Data Lake Store account

$adla_acct = Get-AdlAnalyticsAccount -Name $adla
$dataLakeStoreName = $adla_acct.DefaultDataLakeAccount

データソースの一覧を IsDefault プロパティでフィルター処理して既定の Data Lake Store アカウントを検索できます。You can find the default Data Lake Store account by filtering the list of datasources by the IsDefault property:

Get-AdlAnalyticsDataSource -Account $adla  | ? { $_.IsDefault } 

データ ソースの追加Add a data source


# Add an additional Storage (Blob) account.
$AzureStorageAccountName = "<AzureStorageAccountName>"
$AzureStorageAccountKey = "<AzureStorageAccountKey>"
Add-AdlAnalyticsDataSource -Account $adla -Blob $AzureStorageAccountName -AccessKey $AzureStorageAccountKey

# Add an additional Data Lake Store account.
$AzureDataLakeStoreName = "<AzureDataLakeStoreAccountName"
Add-AdlAnalyticsDataSource -Account $adla -DataLakeStore $AzureDataLakeStoreName 

データ ソースの一覧表示List data sources

# List all the data sources
Get-AdlAnalyticsDataSource -Account $adla

# List attached Data Lake Store accounts
Get-AdlAnalyticsDataSource -Account $adla | where -Property Type -EQ "DataLakeStore"

# List attached Storage accounts
Get-AdlAnalyticsDataSource -Account $adla | where -Property Type -EQ "Blob"

U-SQL ジョブを送信するSubmit U-SQL jobs

文字列を U-SQL ジョブとして送信するSubmit a string as a U-SQL job

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

$scriptpath = "d:\test.usql"
$script | Out-File $scriptpath 

Submit-AdlJob -AccountName $adla -Script $script -Name "Demo"

ファイルを U-SQL ジョブとして送信するSubmit a file as a U-SQL job

$scriptpath = "d:\test.usql"
$script | Out-File $scriptpath 
Submit-AdlJob -AccountName $adla –ScriptPath $scriptpath -Name "Demo"

ジョブのリストList jobs

出力結果には、現在実行されているジョブと最近完了したジョブが含まれます。The output includes the currently running jobs and those jobs that have recently completed.

Get-AdlJob -Account $adla

上位 n 個のジョブを一覧表示するList the top N jobs

既定ではジョブの一覧は送信時に並べ替えられます。By default the list of jobs is sorted on submit time. したがって最近送信されたジョブは、先頭に表示されます。So the most recently submitted jobs appear first. 既定では、ADLA アカウントはジョブを 180 日間記憶していますが、Get-AdlJob コマンドレットは既定で、最初の 500 件のみを返します。By default, The ADLA account remembers jobs for 180 days, but the Get-AdlJob cmdlet by default returns only the first 500. Top パラメーターを使用して、特定の数のジョブを一覧表示します。Use -Top parameter to list a specific number of jobs.

$jobs = Get-AdlJob -Account $adla -Top 10

ジョブの状態別にジョブを一覧表示するList jobs by job state

-State パラメーターの使用Using the -State parameter. 下記の値を任意に組み合わせることができます。You can combine any of these values:

  • Accepted
  • Compiling
  • Ended
  • New
  • Paused
  • Queued
  • Running
  • Scheduling
  • Start
# List the running jobs
Get-AdlJob -Account $adla -State Running

# List the jobs that have completed
Get-AdlJob -Account $adla -State Ended

# List the jobs that have not started yet
Get-AdlJob -Account $adla -State Accepted,Compiling,New,Paused,Scheduling,Start

ジョブの結果別にジョブを一覧表示するList jobs by job result

-Result パラメーターを使って、終了したジョブが正常完了したかどうかを検出します。Use the -Result parameter to detect whether ended jobs completed successfully. 次の値があります。It has these values:

  • キャンセルCancelled
  • 失敗Failed
  • なしNone
  • 成功Succeeded
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

# List Failed jobs.
Get-AdlJob -Account $adla -State Ended -Result Failed

ジョブの送信元別にジョブを一覧表示するList jobs by job submitter

-Submitter パラメーターを使うと、ジョブを送信したユーザーを特定できます。The -Submitter parameter helps you identify who submitted a job.

Get-AdlJob -Account $adla -Submitter "joe@contoso.com"

ジョブの送信時刻別にジョブを一覧表示するList jobs by submission time

-SubmittedAfter はフィルタ処理して時間の範囲を特定する際に役に立ちます。The -SubmittedAfter is useful in filtering to a time range.

# List  jobs submitted in the last day.
$d = [DateTime]::Now.AddDays(-1)
Get-AdlJob -Account $adla -SubmittedAfter $d

# List  jobs submitted in the last seven day.
$d = [DateTime]::Now.AddDays(-7)
Get-AdlJob -Account $adla -SubmittedAfter $d

ジョブの状態の取得Get job status

特定のジョブの状態を取得します。Get the status of a specific job.

Get-AdlJob -AccountName $adla -JobId $job.JobId

ジョブを取り消すCancel a job

Stop-AdlJob -Account $adla -JobID $jobID

ジョブが終了するまで待機するWait for a job to finish

ジョブが完了するまで Get-AdlAnalyticsJob を繰り返す替わりに、Wait-AdlJob コマンドレットを使用してジョブの終了を待機できます。Instead of repeating Get-AdlAnalyticsJob until a job finishes, you can use the Wait-AdlJob cmdlet to wait for the job to end.

Wait-AdlJob -Account $adla -JobId $job.JobId

ジョブ履歴の分析Analyzing job history

Azure PowerShell を使用して、Data Lake Analytics で実行されたジョブ履歴を分析することは、効果的な手法です。Using Azure PowerShell to analyze the history of jobs that have run in Data Lake analytics is a powerful technique. Azure PowerShell を使って使用状況とコストに関する情報を把握することができます。You can use it to gain insights into usage and cost. 詳細については、ジョブ履歴分析のサンプル レポジトリを参照してください。You can learn more by looking at the Job History Analysis sample repo

ジョブのパイプラインと反復を一覧表示するList job pipelines and recurrences

Get-AdlJobPipeline コマンドレットを使って前に送信したジョブのパイプライン情報を確認します。Use the Get-AdlJobPipeline cmdlet to see the pipeline information previously submitted jobs.

$pipelines = Get-AdlJobPipeline -Account $adla
$pipeline = Get-AdlJobPipeline -Account $adla -PipelineId "<pipeline ID>"

Get-AdlJobRecurrence コマンドレットを使って前に送信したジョブの繰り返し情報を確認します。Use the Get-AdlJobRecurrence cmdlet to see the recurrence information for previously submitted jobs.

$recurrences = Get-AdlJobRecurrence -Account $adla

$recurrence = Get-AdlJobRecurrence -Account $adla -RecurrenceId "<recurrence ID>"

コンピューティング ポリシーを管理するManage compute policies

既存のコンピューティング ポリシーを一覧表示するList existing compute policies

Get-AdlAnalyticsComputePolicy コマンドレットは、Data Lake Analytics アカウントのコンピューティング ポリシーの情報を取得します。The Get-AdlAnalyticsComputePolicy cmdlet retrieves info about compute policies for a Data Lake Analytics account.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

コンピューティング ポリシーを作成するCreate a compute policy

New-AdlAnalyticsComputePolicy コマンドレットは、Data Lake Analytics アカウントの新しいコンピューティング ポリシーを作成します。The New-AdlAnalyticsComputePolicy cmdlet creates a new compute policy for a Data Lake Analytics account. この例では、指定したユーザーが使用可能な最大 AU を 50 に、最小のジョブ優先順位を 250 に設定します。This example sets the maximum AUs available to the specified user to 50, and the minimum job priority to 250.

$userObjectId = (Get-AzAdUser -SearchString "garymcdaniel@contoso.com").Id

New-AdlAnalyticsComputePolicy -Account $adla -Name "GaryMcDaniel" -ObjectId $objectId -ObjectType User -MaxDegreeOfParallelismPerJob 50 -MinPriorityPerJob 250

ファイルを管理するManage files

ファイルの存在を確認します。Check for the existence of a file.

Test-AdlStoreItem -Account $adls -Path "/data.csv"

アップロードとダウンロードUploading and downloading

ファイルをアップロードします。Upload a file.

Import-AdlStoreItem -AccountName $adls -Path "c:\data.tsv" -Destination "/data_copy.csv" 

フォルダー全体を再帰的にアップロードします。Upload an entire folder recursively.

Import-AdlStoreItem -AccountName $adls -Path "c:\myData\" -Destination "/myData/" -Recurse

ファイルをダウンロードします。Download a file.

Export-AdlStoreItem -AccountName $adls -Path "/data.csv" -Destination "c:\data.csv"

フォルダー全体を再帰的にダウンロードします。Download an entire folder recursively.

Export-AdlStoreItem -AccountName $adls -Path "/" -Destination "c:\myData\" -Recurse

注意

アップロードまたはダウンロードのプロセスが中断された場合は、-Resume フラグでコマンドレットを再度実行して、プロセスの再開を試みることができます。If the upload or download process is interrupted, you can attempt to resume the process by running the cmdlet again with the -Resume flag.

U-SQL カタログを管理するManage the U-SQL catalog

U-SQL カタログを使用して、U-SQL スクリプトで共有できるように、データとコードを構成します。The U-SQL catalog is used to structure data and code so they can be shared by U-SQL scripts. カタログでは、Azure Data Lake のデータを使用して可能な限り最高のパフォーマンスを実現できます。The catalog enables the highest performance possible with data in Azure Data Lake. 詳細については、「 U-SQL カタログの使用」を参照してください。For more information, see Use U-SQL catalog.

U-SQL カタログ内の項目を一覧表示するList items in the U-SQL catalog

# List U-SQL databases
Get-AdlCatalogItem -Account $adla -ItemType Database 

# List tables within a database
Get-AdlCatalogItem -Account $adla -ItemType Table -Path "database"

# List tables within a schema.
Get-AdlCatalogItem -Account $adla -ItemType Table -Path "database.schema"

すべてのアセンブリと U-SQL カタログを一覧表示するList all the assemblies the U-SQL catalog

$dbs = Get-AdlCatalogItem -Account $adla -ItemType Database

foreach ($db in $dbs)
{
    $asms = Get-AdlCatalogItem -Account $adla -ItemType Assembly -Path $db.Name

    foreach ($asm in $asms)
    {
        $asmname = "[" + $db.Name + "].[" + $asm.Name + "]"
        Write-Host $asmname
    }
}

カタログ項目に関する詳細を取得Get details about a catalog item

# Get details of a table
Get-AdlCatalogItem  -Account $adla -ItemType Table -Path "master.dbo.mytable"

# Test existence of a U-SQL database.
Test-AdlCatalogItem  -Account $adla -ItemType Database -Path "master"

資格情報をカタログに格納するStore credentials in the catalog

U-SQL データベース内で、Azure でホストされているデータベースの資格情報オブジェクトを作成します。Within a U-SQL database, create a credential object for a database hosted in Azure. 現時点で U-SQL 資格情報は、PowerShell を使用して作成できるカタログ項目の唯一の種類です。Currently, U-SQL credentials are the only type of catalog item that you can create through PowerShell.

$dbName = "master"
$credentialName = "ContosoDbCreds"
$dbUri = "https://contoso.database.windows.net:8080"

New-AdlCatalogCredential -AccountName $adla `
          -DatabaseName $db `
          -CredentialName $credentialName `
          -Credential (Get-Credential) `
          -Uri $dbUri

ファイアウォール規則の管理Manage firewall rules

ファイアウォール規則の一覧表示List firewall rules

Get-AdlAnalyticsFirewallRule -Account $adla

ファイアウォール規則の追加Add a firewall rule

$ruleName = "Allow access from on-prem server"
$startIpAddress = "<start IP address>"
$endIpAddress = "<end IP address>"

Add-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName -StartIpAddress $startIpAddress -EndIpAddress $endIpAddress

ファイアウォール規則の変更Modify a firewall rule

Set-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName -StartIpAddress $startIpAddress -EndIpAddress $endIpAddress

ファイアウォール規則の削除Remove a firewall rule

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Azure の IP アドレスを許可するAllow Azure IP addresses

Set-AdlAnalyticsAccount -Name $adla -AllowAzureIpState Enabled
Set-AdlAnalyticsAccount -Name $adla -FirewallState Enabled
Set-AdlAnalyticsAccount -Name $adla -FirewallState Disabled

Azure の操作Working with Azure

エラー詳細の取得Get error details

Resolve-AzError -Last

Windows マシン上で管理者として実行しているかどうかを確認するVerify if you are running as an Administrator on your Windows machine

function Test-Administrator  
{  
    $user = [Security.Principal.WindowsIdentity]::GetCurrent();
    $p = New-Object Security.Principal.WindowsPrincipal $user
    $p.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)  
}

TenantID の検索Find a TenantID

サブスクリプション名から:From a subscription name:

function Get-TenantIdFromSubscriptionName( [string] $subname )
{
    $sub = (Get-AzSubscription -SubscriptionName $subname)
    $sub.TenantId
}

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

サブスクリプション ID から:From a subscription ID:

function Get-TenantIdFromSubscriptionId( [string] $subid )
{
    $sub = (Get-AzSubscription -SubscriptionId $subid)
    $sub.TenantId
}

$subid = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Get-TenantIdFromSubscriptionId $subid

"contoso.com" などのドメイン アドレスから:From a domain address such as "contoso.com"

function Get-TenantIdFromDomain( $domain )
{
    $url = "https://login.windows.net/" + $domain + "/.well-known/openid-configuration"
    return (Invoke-WebRequest $url|ConvertFrom-Json).token_endpoint.Split('/')[3]
}

$domain = "contoso.com"
Get-TenantIdFromDomain $domain

すべてのサブスクリプションとテナント ID を一覧表示するList all your subscriptions and tenant IDs

$subs = Get-AzSubscription
foreach ($sub in $subs)
{
    Write-Host $sub.Name "("  $sub.Id ")"
    Write-Host "`tTenant Id" $sub.TenantId
}

テンプレートを使用して Data Lake Analytics アカウントを作成するCreate a Data Lake Analytics account using a template

次のサンプルを使用して Azure Resource Group テンプレートを使用することもできます:テンプレートを使用して Data Lake Analytics アカウントを作成するYou can also use an Azure Resource Group template using the following sample: Create a Data Lake Analytics account using a template

次の手順Next steps