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

重要

Azure Data Lake Analytics 2024 年 2 月 29 日に廃止されました。 詳細については、このお知らせを参照してください。

データ分析の場合、organizationでは Azure Synapse Analytics または Microsoft Fabric を使用できます。

この記事では、Azure PowerShell を使用して、Azure Data Lake Analytics のアカウント、データ ソース、ユーザー、およびジョブを管理する方法について説明します。

前提条件

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

Data Lake Analytics で PowerShell を使用するには、次の情報を収集します。

  • サブスクリプション ID: Data Lake Analytics アカウントを含む Azure サブスクリプションの ID。
  • リソース グループ: Data Lake Analytics アカウントが含まれている Azure リソース グループの名前。
  • Data Lake Analytics アカウント名: Data Lake Analytics アカウントの名前。
  • 既定の Data Lake Store アカウント名: 各 Data Lake Analytics アカウントには既定の Data Lake Store アカウントがあります。
  • 場所: Data Lake Analytics アカウントの場所。"米国東部 2" やサポートされているその他の場所です。

このチュートリアルの PowerShell スニペットでは、以下の変数を使って各情報を格納します。

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

Azure にログインする

対話型ユーザー認証を使用したログイン

サブスクリプション ID またはサブスクリプション名を使用してログインします。

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

認証コンテキストの保存

Connect-AzAccount コマンドレットは、常に資格情報を要求します。 次のコマンドレットを使用すると、要求を回避できます。

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

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

サービス プリンシパル ID (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

アカウントの管理

アカウントの一覧表示

# 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

アカウントを作成する

すべての Data Lake Analytics アカウントに、ログの保存を目的とした既定の Data Lake Store アカウントが必要です。 既存のアカウントを利用することも、アカウントを作成することもできます。

# 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-AdlAnalyticsAccount -Name $adla

アカウントが存在するかどうかを確認する

Test-AdlAnalyticsAccount -Name $adla

データ ソースを管理する

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

すべての Data Lake Analytics アカウントには、既定の Data Lake Store アカウントがあります。 既定の Data Lake Store アカウントは、ジョブ メタデータとジョブ監査ログの格納に使用されます。

既定の Data Lake Store アカウントの検索

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

データソースの一覧を IsDefault プロパティでフィルター処理して既定の Data Lake Store アカウントを検索できます。

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

データ ソースの追加


# 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 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 ジョブを送信する

文字列を U-SQL ジョブとして送信する

$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 ジョブとして送信する

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

ジョブのリスト

出力結果には、現在実行されているジョブと最近完了したジョブが含まれます。

Get-AdlJob -Account $adla

上位 n 個のジョブを一覧表示する

既定ではジョブの一覧は送信時に並べ替えられます。 したがって最近送信されたジョブは、先頭に表示されます。 既定では、ADLA アカウントはジョブを 180 日間記憶していますが、Get-AdlJob コマンドレットは既定で、最初の 500 件のみを返します。 Top パラメーターを使用して、特定の数のジョブを一覧表示します。

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

ジョブの状態別にジョブを一覧表示する

-State パラメーターの使用 下記の値を任意に組み合わせることができます。

  • 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

ジョブの結果別にジョブを一覧表示する

-Result パラメーターを使って、終了したジョブが正常完了したかどうかを検出します。 次の値があります。

  • Canceled
  • 失敗
  • なし
  • 成功
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

ジョブの送信元別にジョブを一覧表示する

-Submitter パラメーターを使うと、ジョブを送信したユーザーを特定できます。

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

ジョブの送信時刻別にジョブを一覧表示する

-SubmittedAfter はフィルタ処理して時間の範囲を特定する際に役に立ちます。

# 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-AdlJob -AccountName $adla -JobId $job.JobId

ジョブを取り消す

Stop-AdlJob -Account $adla -JobID $jobID

ジョブが終了するまで待機する

ジョブが完了するまで Get-AdlAnalyticsJob を繰り返す替わりに、Wait-AdlJob コマンドレットを使用してジョブの終了を待機できます。

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

ジョブのパイプラインと反復を一覧表示する

Get-AdlJobPipeline コマンドレットを使って前に送信したジョブのパイプライン情報を確認します。

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

Get-AdlJobRecurrence コマンドレットを使って前に送信したジョブの繰り返し情報を確認します。

$recurrences = Get-AdlJobRecurrence -Account $adla

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

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

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

Get-AdlAnalyticsComputePolicy コマンドレットは、Data Lake Analytics アカウントのコンピューティング ポリシーの情報を取得します。

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

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

New-AdlAnalyticsComputePolicy コマンドレットは、Data Lake Analytics アカウントの新しいコンピューティング ポリシーを作成します。 この例では、指定したユーザーが使用可能な最大 AU を 50 に、最小のジョブ優先順位を 250 に設定します。

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

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

ファイルを管理する

ファイルの存在を確認する

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

アップロードとダウンロード

ファイルをアップロードします。

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

フォルダー全体を再帰的にアップロードします。

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

ファイルをダウンロードします。

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

フォルダー全体を再帰的にダウンロードします。

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

Note

アップロードまたはダウンロードのプロセスが中断された場合は、-Resume フラグでコマンドレットを再度実行して、プロセスの再開を試みることができます。

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

U-SQL カタログを使用して、U-SQL スクリプトで共有できるように、データとコードを構成します。 カタログでは、Azure Data Lake のデータを使用して可能な限り最高のパフォーマンスを実現できます。 詳細については、「 U-SQL カタログの使用」を参照してください。

U-SQL カタログ内の項目を一覧表示する

# 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 カタログを一覧表示する

$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 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"

資格情報をカタログに格納する

U-SQL データベース内で、Azure でホストされているデータベースの資格情報オブジェクトを作成します。 現時点で U-SQL 資格情報は、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

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

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

Get-AdlAnalyticsFirewallRule -Account $adla

ファイアウォール規則の追加

$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

ファイアウォール規則の変更

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

ファイアウォール規則の削除

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

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

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

Azure の操作

エラー詳細の取得

Resolve-AzError -Last

Windows マシン上で管理者として実行しているかどうかを確認する

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

TenantID の検索

サブスクリプション名から:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

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

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

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

"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 を一覧表示する

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

次のステップ