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
}
次のステップ
- Microsoft Azure Data Lake Analytics の概要
- Azure portal | Azure PowerShell | Azure CLI で Data Lake Analytics の使用を開始する
- Azure portal | Azure PowerShell | CLI で Azure Data Lake Analytics を管理する