次の方法で共有


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

重要

Azure Data Lake Analytics は 2024 年 2 月 29 日に廃止されました。 このお知らせで詳細を学びましょう

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

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

[前提条件]

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

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

既定の Data Lake Store アカウントを見つけるには、 IsDefault プロパティでデータソースの一覧をフィルター処理します。

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 パラメーターを使用します。 これには次の値があります。

  • 取り消し済み
  • 失敗しました
  • なし
  • 成功しました
# 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

アップロードまたはダウンロードのプロセスが中断された場合は、 -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
}

次のステップ