Condividi tramite


Gestire Azure Data Lake Analytics con Azure PowerShell

Importante

Azure Data Lake Analytics è stato 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 account, origini dati, utenti e processi di Azure Data Lake Analytics usando Azure PowerShell.

Prerequisiti

Annotazioni

È 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: ID della sottoscrizione di Azure che contiene l'account Data Lake Analytics.
  • Gruppo di risorse: nome del gruppo di risorse di Azure che contiene l'account Data Lake Analytics.
  • Nome dell'account di Data Lake Analytics: nome dell'account Data Lake Analytics.
  • Nome account Data Lake Store predefinito: Ogni account Data Lake Analytics ha un account Data Lake Store predefinito.
  • Località: posizione dell'account Data Lake Analytics, ad esempio "Stati Uniti orientali 2" o altre località supportate.

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

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

Accedere ad Azure

Accedere con l'autenticazione utente interattiva

Accedere con un ID sottoscrizione o in base al nome della sottoscrizione

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

Salvataggio del contesto di autenticazione

Il Connect-AzAccount cmdlet richiede sempre le credenziali. È possibile evitare che venga richiesto 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à principale del servizio (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

Gestire gli account

Elenco di 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

Crea un account

Ogni account Data Lake Analytics richiede un account Data Lake Store predefinito usato per l'archiviazione dei log. È possibile riutilizzare 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 informazioni dettagliate su un account.

Get-AdlAnalyticsAccount -Name $adla

Controllare se esiste un account

Test-AdlAnalyticsAccount -Name $adla

Gestisci 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 Data Lake Store predefinito viene usato per archiviare i metadati del processo e i log di controllo del processo.

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 delle origini dati in base alla IsDefault proprietà :

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

Aggiungi 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 attività U-SQL

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

Invia un file come attività U-SQL

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

Elencare i lavori

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

Get-AdlJob -Account $adla

Elenca i primi N lavori

Per impostazione predefinita, l'elenco dei processi viene ordinato in base all'ora di invio. I lavori inviati più di recente appaiono per primi. Per impostazione predefinita, l'account ADLA memorizza i processi per 180 giorni, ma il cmdlet Get-AdlJob per impostazione predefinita restituisce solo i primi 500. Utilizzare il parametro -Top per elencare un numero specifico di lavori.

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

Elencare i lavori per stato del lavoro

Uso del -State parametro . È possibile combinare uno di 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 lavori in base al risultato del lavoro

Usare il -Result parametro per rilevare se i processi terminati sono stati completati correttamente. Ha questi valori:

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

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

Elenca i lavori in base al mittente del lavoro

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

Get-AdlJob -Account $adla -Submitter "[email protected]"

Elenca i lavori in base all'ora di invio

-SubmittedAfter è utile per filtrare 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 del lavoro

Visualizzare lo stato di un processo specifico.

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

Annullare un'attività

Stop-AdlJob -Account $adla -JobID $jobID

Attendere il completamento di un'attività

Anziché ripetere Get-AdlAnalyticsJob fino al termine di un processo, è possibile usare il Wait-AdlJob cmdlet per attendere la fine del processo.

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

Elencare le pipeline di lavoro e le ricorrenze

Usare il Get-AdlJobPipeline cmdlet per visualizzare le informazioni sulla pipeline dei lavori inviati in precedenza.

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

Usare il Get-AdlJobRecurrence cmdlet per visualizzare le informazioni sulla ricorrenza per i processi inviati in precedenza.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Gestire i criteri di calcolo

Elencare i criteri di calcolo esistenti

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

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Creare una politica di calcolo

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

$userObjectId = (Get-AzAdUser -SearchString "[email protected]").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 un'intera cartella in modo ricorsivo.

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 un'intera cartella in modo ricorsivo.

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

Annotazioni

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

Gestire il catalogo U-SQL

Il catalogo U-SQL viene usato per strutturare i dati e il codice in modo che possano essere condivisi dagli script U-SQL. Il catalogo consente le prestazioni più elevate possibili con i dati in Azure Data Lake. Per altre informazioni, vedere Usare il catalogo U-SQL.

Elencare gli 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 del 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 credenziale per un database ospitato in Azure. Attualmente, le credenziali 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

Consenti indirizzi IP di Azure

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

Uso di Azure

Ottenere i dettagli dell'errore

Resolve-AzError -Last

Controlla se stai eseguendo come amministratore sulla tua macchina 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 tutte le sottoscrizioni e gli ID tenant

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

Passaggi successivi