Gestire Azure Data Lake Analytics tramite Azure PowerShell

Importante

Azure Data Lake Analytics ritirato il 29 febbraio 2024. Per altre informazioni , vedere questo annuncio.

Per l'analisi dei dati, l'organizzazione può usare Azure Synapse Analytics o Microsoft Fabric.

Questo articolo descrive come gestire utenti, processi, origini dati e account Azure Data Lake Analytics tramite Azure PowerShell.

Prerequisiti

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Per usare PowerShell con Data Lake Analytics, raccogliere le informazioni seguenti:

  • ID sottoscrizione: l'ID della sottoscrizione di Azure in cui è presente l'account Data Lake Analytics.
  • Gruppo di risorse: il nome del gruppo di risorse di Azure che contiene l'account di Data Lake Analytics.
  • Nome dell'account Data Lake Analytics: il nome dell'account Data Lake Analytics.
  • Nome dell'account Data Lake Store predefinito: ogni account Data Lake Analytics ha un account Data Lake Store predefinito.
  • Posizione: la posizione dell'account di Data Lake Analytics, ad esempio "Stati Uniti orientali 2" o altre posizioni supportate.

I frammenti di codice di PowerShell in questa esercitazione usano le variabili seguenti per archiviare queste informazioni

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

Accedere ad Azure

Accedere usando l'autenticazione utente interattiva

Accedere usando un ID o un nome di sottoscrizione

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

Salvataggio del contesto di autenticazione

Il cmdlet Connect-AzAccount chiede sempre le credenziali. È possibile evitare tale richiesta usando i cmdlet seguenti:

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

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

Accedere usando un'identità dell'entità servizio

$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

Gestisci account

Elencare gli account

# 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

Creare un account

Per ogni account Data Lake Analytics deve essere configurato un account Data Lake Store che viene usato per l'archiviazione dei log. È possibile riusare un account esistente o creare un 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

Ottenere le informazioni sull'account

Ottenere dettagli su un account.

Get-AdlAnalyticsAccount -Name $adla

Verificare l'esistenza di un account

Test-AdlAnalyticsAccount -Name $adla

Gestire le origini dati

Azure Data Lake Analytics supporta attualmente le origini dati seguenti:

Ogni account Data Lake Analytics ha un account Data Lake Store predefinito. L'account di Data Lake Store predefinito viene usato per archiviare i metadati e i log di controllo dei processi.

Trovare l'account di Data Lake Store predefinito

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

È possibile trovare l'account Data Lake Store predefinito filtrando l'elenco di origine dati secondo il criterio di proprietà IsDefault:

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

Aggiungere un'origine dati


# 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

Elencare le origini dati

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

Inviare processi U-SQL

Inviare una stringa come processo 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"

Inviare un file come processo U-SQL

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

Elencare i processi

L'output include i processi attualmente in esecuzione e quelli completati di recente.

Get-AdlJob -Account $adla

Elencare i processi N principali

Per impostazione predefinita, l'elenco dei processi viene ordinato in base all'ora di invio. Pertanto, i processi inviati di recente vengono visualizzati per primi. Per impostazione predefinita, l'account di ADLA memorizza i processi per 180 giorni, ma il cmdlet Get-AdlJob restituisce solo i primi 500. Utilizzare i parametri superiori per elencare un numero specifico di processi.

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

Elencare i processi in base allo stato

Uso del parametro -State. È possibile combinare questi valori:

  • 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

Elencare i processi in base al risultato

Usare il parametro -Result per rilevare se i processi finiti sono stati completati correttamente. Dispone di questi valori:

  • Cancellati
  • Non riuscito
  • Nessuno
  • Completato
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

Elencare i processi in base alla persona che invia la richiesta

Il parametro -Submitter consente di identificare chi ha inviato un processo.

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

Elencare i processi in base all'ora di invio

Il -SubmittedAfter è utile per un filtraggio in base a un intervallo di tempo.

# 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

Ottenere lo stato di processo

Ottenere lo stato di un processo specifico.

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

Annullare un processo

Stop-AdlJob -Account $adla -JobID $jobID

Attendere il completamento di un processo

Anziché ripetere Get-AdlAnalyticsJob finché non termina un processo, è possibile usare il cmdlet Wait-AdlJob per attendere la fine del processo.

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

Elencare pipeline e ricorrenze dei processi

Utilizzare il cmdlet Get-AdlJobPipeline per visualizzare le informazioni di pipeline dei processi inviati in precedenza.

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

Utilizzare il cmdlet Get-AdlJobRecurrence per visualizzare le informazioni relative all'intervallo di esecuzione dei processi inviati in precedenza.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Gestire i criteri di calcolo

Elenco di criteri di calcolo esistenti

Il cmdlet Get-AdlAnalyticsComputePolicy recupera informazioni sui criteri di calcolo per un account Data Lake Analytics.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Creare un criterio di calcolo

Il cmdlet New-AdlAnalyticsComputePolicy crea un nuovo criterio di calcolo per un account Data Lake Analytics. Questo esempio imposta le unità di analisi massime disponibili per l'utente specificato su 50 e la priorità minima del processo su 250.

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

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

Gestire i file

Verificare l'esistenza di un file

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

Caricamento e download

Caricare un file.

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

Caricare in modo ricorsivo un'intera cartella.

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

Scaricare un file.

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

Scaricare in modo ricorsivo un'intera cartella.

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

Nota

Se il processo di caricamento o download viene interrotto, è possibile tentare di riprendere il processo eseguendo nuovamente il cmdlet con il flag -Resume.

Gestire il catalogo U-SQL

Il catalogo di U-SQL viene usato per definire la struttura dei dati e del codice in modo da poterli condividere mediante U-SQL. Il catalogo consente di ottenere le migliori prestazioni possibili con i dati in Azure Data Lake. Per altre informazioni, vedere la pagina di Usare il catalogo di U-SQL.

Elencare elementi nel catalogo 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"

Elencare tutti gli assembly nel catalogo 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
    }
}

Ottenere informazioni dettagliate su un elemento del catalogo

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

Archiviare le credenziali nel catalogo

All'interno di un database U-SQL creare un oggetto credenziali per un database ospitato in Azure. Attualmente le credenziali di U-SQL sono l'unico tipo di elemento del catalogo che è possibile creare tramite 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

Gestire le regole del firewall

Elencare le regole del firewall

Get-AdlAnalyticsFirewallRule -Account $adla

Aggiungere una regola del firewall

$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

Modificare una regola del firewall

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

Rimuovere una regola del firewall

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Consentire gli indirizzi IP di Azure

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

Utilizzo di Azure

Ottenere i dettagli dell'errore

Resolve-AzError -Last

Verificare se si sta eseguendo un processo come amministratore nel computer Windows

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

Trovare un ID tenant

Da un nome di sottoscrizione:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

Da un ID sottoscrizione:

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

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

Da un indirizzo di dominio, ad esempio "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

Elencare tutti gli ID di sottoscrizioni e tenant

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

Passaggi successivi