Gestire Azure Data Lake Analytics tramite Azure PowerShellManage Azure Data Lake Analytics using Azure PowerShell

Informazioni su come gestire gli account, le origini dati, i processi e gli elementi del catalogo di Azure Data Lake Analytics usando Azure PowerShell.Learn how to manage Azure Data Lake Analytics accounts, data sources, jobs, and catalog items using Azure PowerShell.

prerequisitiPrerequisites

Durante la creazione di un account di Data Lake Analytics, è necessario sapere:When creating a Data Lake Analytics account, you need to know:

  • ID sottoscrizione: l'ID di sottoscrizione di Azure in cui risiede l'account di Data Lake Analytics.Subscription ID: The Azure subscription ID under which your Data Lake Analytics account resides.
  • Gruppo di risorse: il nome del gruppo di risorse di Azure che contiene l'account di Data Lake Analytics.Resource group: The name of the Azure resource group that contains your Data Lake Analytics account.
  • Nome dell'account Data Lake Analytics: il nome dell'account deve contenere solo lettere minuscole e numeri.Data Lake Analytics account name: The account name must only contain lowercase letters and numbers.
  • Account Data Lake Store predefinito: ogni account Data Lake Analytics ha un account Data Lake Store predefinito.Default Data Lake Store account: Each Data Lake Analytics account has a default Data Lake Store account. Questi account devono essere nello stesso percorso.These accounts must be in the same location.
  • Posizione: la posizione dell'account di Data Lake Analytics, ad esempio "Stati Uniti orientali 2" o altre posizioni supportate.Location: The location of your Data Lake Analytics account, such as "East US 2" or other supported locations. Le posizioni supportate possono essere visualizzate nella pagina dei prezzi.Supported locations can be seen on our pricing page.

I frammenti di codice di PowerShell in questa esercitazione usano le variabili seguenti per archiviare queste informazioniThe PowerShell snippets in this tutorial use these variables to store this information

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

AccessoLog in

Accesso con un ID di sottoscrizione.Log in using a subscription id.

Connect-AzureRmAccount -SubscriptionId $subId

Accesso con un nome di sottoscrizione.Log in using a subscription name.

Connect-AzureRmAccount -SubscriptionName $subname 

Il cmdlet Connect-AzureRmAccount richiede sempre le credenziali.The Connect-AzureRmAccount cmdlet always prompts for credentials. È possibile evitare tale richiesta usando i cmdlet seguenti:You can avoid being prompted by using the following cmdlets:

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

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

Gestisci accountManage accounts

Creare un account di Analisi Data LakeCreate a Data Lake Analytics account

Se non si ha già un gruppo di risorse da usare, crearne uno.If you don't already have a resource group to use, create one.

New-AzureRmResourceGroup -Name  $rg -Location $location

Per ogni account Data Lake Analytics deve essere configurato un account Data Lake Store che viene usato per l'archiviazione dei log.Every Data Lake Analytics account requires a default Data Lake Store account that it uses for storing logs. È possibile riusare un account esistente o creare un account.You can reuse an existing account or create an account.

New-AdlStore -ResourceGroupName $rg -Name $adls -Location $location

Quando sono disponibili un gruppo di risorse e un account Data Lake Store, creare un account Data Lake Analytics.Once a Resource Group and Data Lake Store account is available, create a Data Lake Analytics account.

New-AdlAnalyticsAccount -ResourceGroupName $rg -Name $adla -Location $location -DefaultDataLake $adls

Ottenere informazioni sull'accountGet acount information

Ottenere dettagli su un account.Get details about an account.

Get-AdlAnalyticsAccount -Name $adla

Verificare l'esistenza di un account specifico di Data Lake Analytics.Check the existence of a specific Data Lake Analytics account. Il cmdlet restituisce $true o $false.The cmdlet returns either $true or $false.

Test-AdlAnalyticsAccount -Name $adla

Verificare l'esistenza di un account specifico di Data Lake Store.Check the existence of a specific Data Lake Store account. Il cmdlet restituisce $true o $false.The cmdlet returns either $true or $false.

Test-AdlStoreAccount -Name $adls

Elencare gli accountList accounts

Elencare gli account di Data Lake Analytics all'interno della sottoscrizione corrente.List Data Lake Analytics accounts within the current subscription.

Get-AdlAnalyticsAccount

Elencare gli account di Data Lake Analytics all'interno di un gruppo di risorse specifico.List Data Lake Analytics accounts within a specific resource group.

Get-AdlAnalyticsAccount -ResourceGroupName $rg

Gestire le origini datiManage data sources

Azure Data Lake Analytics supporta attualmente le origini dati seguenti:Azure Data Lake Analytics currently supports the following data sources:

Quando si crea un account di Analytics, è necessario impostare un account di Data Lake Store come origine dati predefinita.When you create an Analytics account, you must designate a Data Lake Store account to be the default data source. L'account di Data Lake Store predefinito viene usato per archiviare i metadati e i log di controllo dei processi.The default Data Lake Store account is used to store job metadata and job audit logs. Dopo aver creato un account di Data Lake Analytics, è possibile aggiungere altri account di Data Lake Store e/o account di archiviazione.After you have created a Data Lake Analytics account, you can add additional Data Lake Store accounts and/or Storage accounts.

Trovare l'account di Data Lake Store predefinitoFind the default Data Lake Store account

$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:You can find the default Data Lake Store account by filtering the list of datasources by the IsDefault property:

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

Aggiungere un'origine datiAdd a data source


# 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 datiList data sources

# List all the data sources
Get-AdlAnalyticsDataSource -Name $adla

# List attached Data Lake Store accounts
Get-AdlAnalyticsDataSource -Name $adla | where -Property Type -EQ "DataLakeStore"

# List attached Storage accounts
Get-AdlAnalyticsDataSource -Name $adla | where -Property Type -EQ "Blob"

Inviare processi U-SQLSubmit U-SQL jobs

Inviare una stringa come script U-SQLSubmit a string as a U-SQL script

$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 script U-SQLSubmit a file as a U-SQL script

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

Elencare i processi in un accountList jobs in an account

Elencare tutti i processi nell'account.List all the jobs in the account.

L'output include i processi attualmente in esecuzione e quelli completati di recente.The output includes the currently running jobs and those jobs that have recently completed.

Get-AdlJob -Account $adla

Elencare i processi N principaliList the top N jobs

Per impostazione predefinita, l'elenco dei processi viene ordinato in base all'ora di invio.By default the list of jobs is sorted on submit time. Pertanto, i processi inviati di recente vengono visualizzati per primi.So the most recently submitted jobs appear first. Per impostazione predefinita, l'account di ADLA memorizza i processi per 180 giorni, ma il cmdlet Get-AdlJob restituisce solo i primi 500.By default, The ADLA account remembers jobs for 180 days, but the Get-AdlJob cmdlet by default returns only the first 500. Utilizzare i parametri superiori per elencare un numero specifico di processi.Use -Top parameter to list a specific number of jobs.

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

Elencare i processi in base al valore della proprietà processoList jobs based on the value of job property

Uso del parametro -State.Using the -State parameter. È possibile combinare questi valori:You can combine any of these values:

  • 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

Usare il parametro -Result per rilevare se i processi finiti sono stati completati correttamente.Use the -Result parameter to detect whether ended jobs completed successfully. Dispone di questi valori:It has these values:

  • Operazione annullataCancelled
  • Operazione non riuscitaFailed
  • NessunaNone
  • SucceededSucceeded
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

Il parametro -Submitter consente di identificare chi ha inviato un processo.The -Submitter parameter helps you identify who submitted a job.

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

Il -SubmittedAfter è utile per un filtraggio in base a un intervallo di tempo.The -SubmittedAfter is useful in filtering to a time range.

# 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

Analisi della cronologia processoAnalyzing job history

L'uso di Azure PowerShell per analizzare la cronologia dei processi eseguiti in Data Lake Analytics è una tecnica potente.Using Azure PowerShell to analyze the history of jobs that have run in Data Lake analytics is a powerful technique. In questo modo, è possibile ottenere informazioni dettagliate sull'utilizzo e sui costi.You can use it to gain insights into usage and cost. Per altre informazioni, vedere il repository di esempio di analisi della cronologia processoYou can learn more by looking at the Job History Analysis sample repo

Ottenere informazioni sulle pipeline e l'intervallo di esecuzioneGet information about pipelines and recurrences

Utilizzare il cmdlet Get-AdlJobPipeline per visualizzare le informazioni di pipeline dei processi inviati in precedenza.Use the Get-AdlJobPipeline cmdlet to see the pipeline information previously submitted jobs.

$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.Use the Get-AdlJobRecurrence cmdlet to see the recurrence information for previously submitted jobs.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Ottenere informazioni su un processoGet information about a job

Ottenere lo stato di processoGet job status

Ottenere lo stato di un processo specifico.Get the status of a specific job.

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

Esaminare gli output di processoExamine the job outputs

Al termine del processo, controllare se il file di output esiste elencando i file in una cartella.After the job has ended, check if the output file exists by listing the files in a folder.

Get-AdlStoreChildItem -Account $adls -Path "/"

Gestire i processi in esecuzioneManage running jobs

Annullare un processoCancel a job

Stop-AdlJob -Account $adls -JobID $jobID

Attendere il completamento di un processoWait for a job to finish

Anziché ripetere Get-AdlAnalyticsJob finché non termina un processo, è possibile usare il cmdlet Wait-AdlJob per attendere la fine del processo.Instead of repeating Get-AdlAnalyticsJob until a job finishes, you can use the Wait-AdlJob cmdlet to wait for the job to end.

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

Gestire i criteri di calcoloManage compute policies

Elenco di criteri di calcolo esistentiList existing compute policies

Il cmdlet Get-AdlAnalyticsComputePolicy recupera informazioni sui criteri di calcolo per un account Data Lake Analytics.The Get-AdlAnalyticsComputePolicy cmdlet retrieves info about compute policies for a Data Lake Analytics account.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Creare un criterio di calcoloCreate a compute policy

Il cmdlet New-AdlAnalyticsComputePolicy crea un nuovo criterio di calcolo per un account Data Lake Analytics.The New-AdlAnalyticsComputePolicy cmdlet creates a new compute policy for a Data Lake Analytics account. In questo esempio le unità di analisi massime disponibili per l'utente specificato sono 50 e la priorità minima del processo è pari a 250.This example sets the maximum AUs available to the specified user to 50, and the minimum job priority to 250.

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

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

Verificare l'esistenza di un file.Check for the existence of a file.

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

Caricamento e downloadUploading and downloading

Caricare un file.Upload a file.

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

Caricare in modo ricorsivo un'intera cartella.Upload an entire folder recursively.

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

Scaricare un file.Download a file.

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

Scaricare in modo ricorsivo un'intera cartella.Download an entire folder recursively.

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.If the upload or download process is interrupted, you can attempt to resume the process by running the cmdlet again with the -Resume flag.

Gestire gli elementi del catalogoManage catalog items

Il catalogo di U-SQL viene usato per definire la struttura dei dati e del codice in modo da poterli condividere mediante U-SQL.The U-SQL catalog is used to structure data and code so they can be shared by U-SQL scripts. Il catalogo consente di ottenere le migliori prestazioni possibili con i dati in Azure Data Lake.The catalog enables the highest performance possible with data in Azure Data Lake. Per altre informazioni, vedere la pagina di Usare il catalogo di U-SQL.For more information, see Use U-SQL catalog.

Elencare elementi nel catalogo U-SQLList items in the U-SQL catalog

# 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 in tutti i database in un account ADLA.List all the assemblies in all the databases in an ADLA Account.

$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 catalogoGet details about a catalog item

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

Creare le credenziali in un catalogoCreate credentials in a catalog

All'interno di un database U-SQL creare un oggetto credenziali per un database ospitato in Azure.Within a U-SQL database, create a credential object for a database hosted in Azure. Attualmente le credenziali di U-SQL sono l'unico tipo di elemento del catalogo che è possibile creare tramite PowerShell.Currently, U-SQL credentials are the only type of catalog item that you can create through 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

Ottenere le informazioni di base relative all'account ADLAGet basic information about an ADLA account

Dato un nome di account, il codice seguente cerca le informazioni di base sull'accountGiven an account name, the following code looks up basic information about the account

$adla_acct = Get-AdlAnalyticsAccount -Name "saveenrdemoadla"
$adla_name = $adla_acct.Name
$adla_subid = $adla_acct.Id.Split("/")[2]
$adla_sub = Get-AzureRmSubscription -SubscriptionId $adla_subid
$adla_subname = $adla_sub.Name
$adla_defadls_datasource = Get-AdlAnalyticsDataSource -Account $adla_name  | ? { $_.IsDefault } 
$adla_defadlsname = $adla_defadls_datasource.Name

Write-Host "ADLA Account Name" $adla_name
Write-Host "Subscription Id" $adla_subid
Write-Host "Subscription Name" $adla_subname
Write-Host "Defautl ADLS Store" $adla_defadlsname
Write-Host 

Write-Host '$subname' " = ""$adla_subname"" "
Write-Host '$subid' " = ""$adla_subid"" "
Write-Host '$adla' " = ""$adla_name"" "
Write-Host '$adls' " = ""$adla_defadlsname"" "

Gestire le regole del firewallManage firewall rules

Elencare le regole del firewallList firewall rules

Get-AdlAnalyticsFirewallRule -Account $adla

Aggiungere una regola del firewallAdd a firewall rule

$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 firewallChange a firewall rule

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

Rimuovere una regola del firewallRemove a firewall rule

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Consentire gli indirizzi IP di Azure.Allow Azure IP addresses.

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

Utilizzo di AzureWorking with Azure

Ottenere i dettagli di errore di AzureRmGet details of AzureRm errors

Resolve-AzureRmError -Last

Verificare che il processo sia in esecuzione in modalità amministratoreVerify if you are running as an administrator

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

Trovare un ID tenantFind a TenantID

Da un nome di sottoscrizione:From a subscription name:

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

Get-TenantIdFromSubcriptionName "ADLTrainingMS"

Da un ID di sottoscrizione:From a subscription id:

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

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

Da un indirizzo di dominio, ad esempio "contoso.com"From a domain address such as "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 i relativi ID tenantList all your subscriptions and tenant ids

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

Creare un account Data Lake Analytics usando un modelloCreate a Data Lake Analytics account using a template

È anche possibile usare un modello di gruppo di risorse di Azure con l'esempio seguente: Creare un account Data Lake Analytics usando un modelloYou can also use an Azure Resource Group template using the following sample: Create a Data Lake Analytics account using a template

Passaggi successiviNext steps