Partager via


Gestion d'Azure Data Lake Analytics à l'aide d'Azure PowerShell

Important

Azure Data Lake Analytics mis hors service le 29 février 2024. Découvrez-en plus avec cette annonce.

Pour l’analytique des données, votre organization peut utiliser Azure Synapse Analytics ou Microsoft Fabric.

Cet article décrit comment gérer des comptes Azure Data Lake Analytics, des sources de données, des utilisateurs et des travaux à l’aide d’Azure PowerShell.

Prérequis

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Pour utiliser PowerShell avec Data Lake Analytics, collectez les informations suivantes :

  • ID d’abonnement : ID de l’abonnement Azure qui contient votre compte Data Lake Analytics.
  • Groupe de ressources : nom du groupe de ressources Azure qui contient votre compte Data Lake Analytics.
  • Nom du compte Data Lake Analytics : nom de votre compte Data Lake Analytics.
  • Nom du compte Data Lake Store par défaut : chaque compte Data Lake Analytics possède un compte Data Lake Store par défaut.
  • Emplacement : emplacement de votre compte Data Lake Analytics, comme « USA Est 2 » ou autres emplacements pris en charge.

Dans ce didacticiel, les extraits de code PowerShell utilisent ces variables pour stocker ces informations.

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

Connexion à Azure

Connexion à l’aide de l’authentification utilisateur interactif

Connexion à l’aide d’un ID d’abonnement ou par nom d’abonnement

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

Enregistrement du contexte d’authentification

La cmdlet Connect-AzAccount demande toujours les informations d’identification. Vous pouvez éviter cela à l’aide des cmdlets suivantes :

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

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

Connexion à l’aide d’une identité de principal du service (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

Gérer les comptes

Énumérer les comptes

# 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

Créer un compte

Chaque compte Data Lake Analytics nécessite un compte Data Lake Store par défaut pour stocker les journaux d’activité. Vous pouvez réutiliser un compte ou en créer un.

# 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

Obtenir les informations de compte

Obtenez les détails relatifs à un compte.

Get-AdlAnalyticsAccount -Name $adla

Vérifier si un compte existe

Test-AdlAnalyticsAccount -Name $adla

Gérer les sources de données

Azure Data Lake Analytics prend actuellement en charge les sources de données suivantes :

Chaque compte Data Lake Analytics possède un compte Data Lake Store par défaut. Le compte Data Lake Store par défaut est utilisé pour stocker les métadonnées du travail et les journaux d’audit du travail.

Rechercher le compte Data Lake Store par défaut

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

Vous trouverez le compte Data Lake Store par défaut en filtrant la liste des sources de données par le IsDefault propriété :

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

Ajouter une source de données


# 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

Lister les sources de données

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

Envoyer des travaux U-SQL

Envoyer une chaîne en tant que travail 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"

Envoyer un fichier en tant que travail U-SQL

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

Répertorier les travaux

La sortie comprend les travaux en cours et ceux qui ont été terminés récemment.

Get-AdlJob -Account $adla

Répertorier les N premiers travaux

Par défaut, la liste des travaux est triée en fonction de l’heure d’envoi. Par conséquent, les travaux envoyés le plus récemment s’affichent en premier. Par défaut, le compte ADLA garde en mémoire les travaux pendant 180 jours, mais l’applet de commande AdlJob-Ge ne retourne par défaut que les 500 premiers travaux. Utilisez le paramètre -Top pour lister un nombre spécifique de travaux.

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

Répertorier les travaux par état du travail

Utilisation du -State paramètre. Vous pouvez combiner chacune de ces valeurs :

  • 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

Répertorier les travaux par résultat du travail

Utilisez le -Result paramètre pour détecter si les travaux terminés se sont achevés correctement. Il possède ces valeurs :

  • Opération annulée
  • Échec
  • None
  • Opération réussie
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

Répertorier les travaux par expéditeur du travail

Le -Submitter paramètre vous permet d’identifier qui a envoyé une tâche.

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

Répertorier les travaux par heure d’envoi

Le paramètre -SubmittedAfter est utile lorsque vous filtrez dans un intervalle de temps.

# 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

Obtenir l’état de la tâche

Affichez l’état d’un travail.

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

Annulation d’une tâche

Stop-AdlJob -Account $adla -JobID $jobID

Attendre la fin d’une tâche

Au lieu de répéter Get-AdlAnalyticsJob jusqu’à ce qu’un travail se termine, vous pouvez utiliser la cmdlet Wait-AdlJob pour attendre la fin du travail.

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

Répertorier les pipelines et les récurrences des tâches

Utilisez l’ Get-AdlJobPipeline applet de commande pour afficher les tâches déjà soumises sur les informations de pipeline.

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

Utilisez l’ Get-AdlJobRecurrence applet de commande pour afficher les informations sur la périodicité des tâches déjà soumises.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Gérer les stratégies de calcul

Lister les stratégies de calcul existantes

L’ Get-AdlAnalyticsComputePolicy applet de commande récupère des informations sur les stratégies de calcul pour un compte Data Lake Analytics.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Créer une stratégie de calcul

L’ New-AdlAnalyticsComputePolicy applet de commande crée une nouvelle stratégie de calcul pour un compte Data Lake Analytics. Cet exemple définit les AU maximales disponibles pour l’utilisateur spécifié à 50 et la priorité minimale de la tâche à 250.

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

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

Gérer les fichiers

Vérifier l’existence d’un fichier

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

Chargement et téléchargement

Chargez un fichier.

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

Chargez un dossier entier de manière récursive.

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

Téléchargez un fichier.

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

Téléchargez un dossier entier de manière récursive.

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

Notes

Si le processus de chargement ou de téléchargement est interrompu, vous pouvez tenter de reprendre le processus en exécutant à nouveau la cmdlet avec l’indicateur -Resume.

Gérer le catalogue U-SQL

Le catalogue U-SQL est utilisé pour structurer les données et le code afin que les scripts U-SQL puissent les partager. Le catalogue permet les meilleures performances possibles avec les données comprises dans Azure Data Lake. Pour plus d'informations, consultez Utilisation du catalogue U-SQL.

Lister les éléments dans le catalogue 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"

Répertorier tous les assemblys du catalogue 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
    }
}

Obtenir des détails sur un élément de catalogue

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

Stocker les informations d’identification dans le catalogue

Dans une base de données U-SQL, créez un objet informations d’identification pour une base de données hébergée dans Azure. Actuellement, les informations d’identification U-SQL sont le seul type d’élément de catalogue que vous pouvez créer via 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

Gérer les règles de pare-feu

Répertorier les règles de pare-feu

Get-AdlAnalyticsFirewallRule -Account $adla

Ajouter une règle de pare-feu

$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

Modifier une règle de pare-feu

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

Supprimer une règle de pare-feu

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Autoriser les adresses IP Azure

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

Utilisation d’Azure

Voir les détails de l’erreur

Resolve-AzError -Last

Vérifier que vous exécutez en tant qu’administrateur sur votre machine Windows

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

Trouver un TenantID

À partir du nom d’un abonnement :

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

À partir de l’ID d’un abonnement :

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

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

À partir d’une adresse de domaine, comme « 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

Répertorier tous vos abonnements et leurs ID locataire

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

Étapes suivantes