Partager via


Gérer Azure Data Lake Analytics à l’aide d’Azure PowerShell

Important

Azure Data Lake Analytics a pris sa retraite le 29 février 2024. Découvrez-en plus sur grâce à cette annonce.

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

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

Conditions préalables

Remarque

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 de compte Data Lake Store par défaut: chaque compte Data Lake Analytics a un compte Data Lake Store par défaut.
  • Emplacement: emplacement de votre compte Data Lake Analytics, tel que « USA Est 2 » ou d’autres emplacements pris en charge.

Les extraits de code PowerShell de ce didacticiel utilisent ces variables pour stocker ces informations

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

Connexion à Azure

Se connecter à l’aide de l’authentification utilisateur interactive

Connectez-vous à 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

L’applet de commande Connect-AzAccount invite toujours les informations d’identification. Vous pouvez éviter de recevoir des invites en utilisant les applets de commande suivantes :

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

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

Se connecter à l’aide d’une identité de principal de 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

Répertorier 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 utilisé pour le stockage des journaux de suivi. Vous pouvez réutiliser un compte existant ou créer un compte.

# 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 des détails sur 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 a 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 des travaux.

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 la propriété IsDefault :

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

Répertorier 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 tâche 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"

Liste des emplois

La sortie inclut les tâches en cours d'exécution et celles qui ont récemment été terminées.

Get-AdlJob -Account $adla

Répertorier les N meilleurs emplois

Par défaut, la liste des travaux est triée au moment de l’envoi. Les travaux les plus récemment envoyés apparaissent donc en premier. Par défaut, le compte ADLA mémorise les travaux pendant 180 jours, mais l’applet de commande Get-AdlJob par défaut retourne uniquement les 500 premiers. Utilisez -Top paramètre pour répertorier un nombre spécifique de travaux.

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

Répertorier les travaux par état de travail

Utilisation du paramètre -State. Vous pouvez combiner l’une 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 paramètre -Result pour détecter si les travaux terminés ont été complétés avec succès. Il a ces valeurs :

  • Annulé
  • Échec
  • Aucun
  • Réussi
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

Lister les travaux par auteur

Le paramètre -Submitter vous aide à identifier les personnes qui ont soumis un travail.

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

Répertorier les travaux par heure de soumission

La -SubmittedAfter est utile pour filtrer sur 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 le statut de la tâche

Obtenez l’état d’un travail spécifique.

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

Annuler un travail

Stop-AdlJob -Account $adla -JobID $jobID

Attendre la fin d’un travail

Au lieu de répéter Get-AdlAnalyticsJob jusqu’à la fin d’un travail, vous pouvez utiliser l’applet de commande Wait-AdlJob pour attendre la fin du travail.

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

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

Utilisez l’applet de commande Get-AdlJobPipeline pour voir les informations sur le pipeline des tâches précédemment soumises.

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

Utilisez l’applet de commande Get-AdlJobRecurrence pour afficher les informations de périodicité des travaux précédemment envoyés.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Gérer les stratégies de calcul

Répertorier les stratégies de calcul existantes

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

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Créer une stratégie de calcul

L’applet de commande New-AdlAnalyticsComputePolicy crée une stratégie de calcul pour un compte Data Lake Analytics. Cet exemple définit le nombre maximal d'AUs disponibles pour l'utilisateur spécifié sur 50, et la priorité minimale de tâche sur 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

Rechercher 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

Remarque

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

Gérer le catalogue U-SQL

Le catalogue U-SQL est utilisé pour structurer des données et du code afin qu’ils puissent être partagés par des scripts U-SQL. Le catalogue offre les performances les plus élevées possibles avec les données dans Azure Data Lake. Pour plus d’informations, consultez Utiliser le catalogue U-SQL.

Répertorier 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 d’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

Obtenir les détails de l’erreur

Resolve-AzError -Last

Vérifiez si vous exécutez en tant qu’administrateur sur votre ordinateur Windows

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

Rechercher un TenantID

À partir d’un nom d’abonnement :

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

À partir d’un ID d’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 telle que « 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 ID de locataire

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

Étapes suivantes