使用 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 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。
若要搭配使用 PowerShell 與 Data Lake Analytics,請收集下列幾項資訊:
- 訂用帳戶識別碼:Data Lake Analytics 帳戶所在 Azure 訂用帳戶的識別碼。
- 資源群組:包含您 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
使用互動式使用者驗證來登入
使用訂用帳戶識別碼或以訂用帳戶名稱來登入
# Using subscription id
Connect-AzAccount -SubscriptionId $subId
# Using subscription name
Connect-AzAccount -SubscriptionName $subname
儲存驗證內容
Connect-AzAccount
Cmdlet 一律會提示輸入認證。 您可以使用下列 Cmdlet 來避免出現提示:
# Save login session information
Save-AzAccounts -Path D:\profile.json
# Load login session information
Select-AzAccounts -Path D:\profile.json
使用服務主體身分識別 (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 帳戶
$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 天內的作業,但 Ge-AdlJob Cmdlet 預設只會傳回前 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
參數來偵測已結束的工作是否順利完成。 它有下列值:
- 已取消
- Failed
- None
- 成功
# 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
Cmdlet 來等候作業結束。
Wait-AdlJob -Account $adla -JobId $job.JobId
列出作業管線和週期
使用 Get-AdlJobPipeline
Cmdlet 來查看先前提交作業的管線資訊。
$pipelines = Get-AdlJobPipeline -Account $adla
$pipeline = Get-AdlJobPipeline -Account $adla -PipelineId "<pipeline ID>"
使用 Get-AdlJobRecurrence
Cmdlet 來查看先前提交作業的週期資訊。
$recurrences = Get-AdlJobRecurrence -Account $adla
$recurrence = Get-AdlJobRecurrence -Account $adla -RecurrenceId "<recurrence ID>"
管理計算原則
列出現有的計算原則
Get-AdlAnalyticsComputePolicy
Cmdlet 會擷取 Data Lake Analytics 帳戶的計算原則清單。
$policies = Get-AdlAnalyticsComputePolicy -Account $adla
建立計算原則
New-AdlAnalyticsComputePolicy
Cmdlet 會為 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
旗標來重新執行該 Cmdlet,以嘗試繼續該程序。
管理 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"
從訂用帳戶識別碼:
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
列出您的所有訂用帳戶和租用戶識別碼
$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 入口網站 | Azure PowerShell | Azure CLI 來開始使用 Data Lake Analytics
- 運用 Azure 入口網站 | Azure PowerShell | CLI 來管理 Azure Data Lake Analytics