Verwalten von Azure Data Lake Analytics mithilfe von Azure PowerShell

Wichtig

Azure Data Lake Analytics am 29. Februar 2024 eingestellt. In dieser Ankündigung erhalten Sie weitere Informationen.

Für Datenanalysen kann Ihr organization Azure Synapse Analytics oder Microsoft Fabric verwenden.

In diesem Artikel wird beschrieben, wie Sie Azure Data Lake Analytics-Konten, -Datenquellen, -Benutzer und -Aufträge mit Azure PowerShell verwalten.

Voraussetzungen

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Sammeln Sie die folgenden Informationen, um PowerShell mit Data Lake Analytics zu verwenden:

  • Abonnement-ID: ID des Azure-Abonnements, das Ihr Data Lake Analytics-Konto enthält.
  • Ressourcengruppe: der Name der Azure-Ressourcengruppe, die Ihr Data Lake Analytics-Konto enthält
  • Name des Data Lake Analytics-Kontos: Name Ihres Data Lake Analytics-Kontos.
  • Name des Data Lake Store-Standardkontos: Jedes Data Lake Analytics-Konto verfügt über ein Data Lake Store-Standardkonto.
  • Standort: der Standort des Data Lake Analytics-Kontos, z.B. „USA, Osten 2“ oder andere unterstützte Standorte.

In den PowerShell-Codeausschnitten dieses Tutorials werden die folgenden Variablen zum Speichern dieser Informationen verwendet:

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

Anmelden an Azure

Anmelden per interaktiver Benutzerauthentifizierung

Anmelden per Abonnement-ID oder Abonnementname

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

Speichern des Authentifizierungskontexts

Das Cmdlet Connect-AzAccount fordert immer zur Eingabe von Anmeldeinformationen auf. Damit diese Aufforderung nicht erfolgt, können Sie die folgenden Cmdlets verwenden:

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

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

Anmelden per Service Principal Identity (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

Konten verwalten

Auflisten von Konten

# 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

Erstellen eines Kontos

Für jedes Data Lake Analytics-Konto ist ein Data Lake Store-Standardkonto erforderlich, das zum Speichern von Protokollen verwendet wird. Sie können ein vorhandenes Konto wiederverwenden oder ein Konto erstellen.

# 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

Abrufen von Kontoinformationen

Rufen Sie Details zu einem Konto ab.

Get-AdlAnalyticsAccount -Name $adla

Überprüfen, ob ein Konto vorhanden ist

Test-AdlAnalyticsAccount -Name $adla

Datenquellen verwalten

Azure Data Lake Analytics unterstützt derzeit die folgenden Datenquellen:

Für jedes Data Lake Analytics-Konto ist ein Data Lake Store-Standardkonto vorhanden. Das Data Lake Store-Standardkonto dient zum Speichern von Auftragsmetadaten und -überwachungsprotokollen.

Ermitteln des Data Lake-Standardspeicherkontos

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

Sie können das Standardkonto für den Data Lake-Speicher finden, indem Sie die Liste der Datenquellen nach der IsDefault-Eigenschaft filtern:

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

Hinzufügen einer Datenquelle


# 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

Auflisten von Datenquellen

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

Übermitteln von U-SQL-Aufträgen

Übermitteln einer Zeichenfolge als U-SQL-Auftrag

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

Übermitteln einer Datei als U-SQL-Auftrag

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

Auflisten von Aufträgen

Die Ausgabe enthält die derzeit ausgeführten Aufträge sowie die Aufträge, die vor Kurzem abgeschlossen wurden.

Get-AdlJob -Account $adla

Auflisten der Top N Aufträge

Die Liste der Aufträge wird standardmäßig nach der Übermittlungszeit sortiert. Die zuletzt gesendeten Aufträge werden somit zuerst angezeigt. Im ADLA-Konto werden Aufträge standardmäßig 180 Tage lang beibehalten, mit dem Cmdlet „Get-AdlJob“ werden jedoch nur die ersten 500 Aufträge zurückgegeben. Verwenden Sie den Parameter „-Top“, um eine bestimmte Anzahl von Aufträgen aufzulisten.

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

Auflisten von Aufträgen nach Auftragsstatus

Mithilfe des Parameters -State. Sie können jeden der folgenden Werte kombinieren:

  • 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

Auflisten von Aufträgen nach Auftragsergebnis

Verwenden Sie den Parameter -Result, um zu erkennen, ob die beendeten Aufträge erfolgreich abgeschlossen wurden. Er enthält folgende Werte:

  • Canceled
  • Fehler
  • Keine
  • Erfolgreich
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

Auflisten von Aufträgen nach dem Übermittler des Auftrags

Mithilfe des Parameters -Submitter können Sie erkennen, wer einen Auftrag übermittelt hat.

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

Auflisten von Aufträgen nach der Übermittlungszeit

Der Parameter -SubmittedAfter ist nützlich, um nach einem Zeitbereich zu filtern.

# 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

Abrufen des Auftragsstatus

Rufen Sie den Status eines bestimmten Auftrags ab.

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

Abbrechen eines Auftrags

Stop-AdlJob -Account $adla -JobID $jobID

Warten auf den Abschluss eines Auftrags

Anstatt Get-AdlAnalyticsJob zu wiederholen, bis ein Auftrag abgeschlossen ist, können Sie das Cmdlet Wait-AdlJob verwenden, um zu warten, bis der Auftrag beendet wurde.

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

Auflisten von Auftragspipelines und -wiederholungen

Verwenden Sie das Cmdlet Get-AdlJobPipeline, um die Pipelineinformationen für zuvor übermittelte Aufträge anzuzeigen.

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

Verwenden Sie das Cmdlet Get-AdlJobRecurrence, um die Wiederholungsinformationen für zuvor übermittelte Aufträge anzuzeigen.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Verwalten von Computerichtlinien

Auflisten vorhandener Computerichtlinien

Durch das Cmdlet Get-AdlAnalyticsComputePolicy werden Informationen über Computerichtlinien für ein Data Lake Analytics-Konto abgerufen.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Erstellen einer Computerichtlinie

Durch das Cmdlet New-AdlAnalyticsComputePolicy werden Informationen über Computerichtlinien für ein Data Lake Analytics-Konto abgerufen. In diesem Beispiel werden die maximalen AUs, die für den angegebenen Benutzer verfügbar sind, auf 50 und die minimale Auftragspriorität auf 250 festgelegt.

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

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

Verwalten von Dateien

Überprüfen des Vorhandenseins einer Datei

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

Hoch- und Herunterladen

Laden Sie eine Datei hoch.

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

Laden Sie einen gesamten Ordner rekursiv hoch.

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

Laden Sie eine Datei herunter.

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

Laden Sie einen gesamten Ordner rekursiv herunter.

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

Hinweis

Wenn der Upload- oder Downloadvorgang unterbrochen wird, können Sie versuchen, den Vorgang fortzusetzen, indem Sie das Cmdlet mit dem Flag -Resume erneut ausführen.

Verwalten des U-SQL-Katalogs

Der U-SQL-Katalog wird zum Strukturieren von Daten und Code verwendet, damit diese von U-SQL-Skripts gemeinsam genutzt werden können. Der Katalog ermöglicht die höchstmögliche Leistung mit Daten in Azure Data Lake. Weitere Informationen finden Sie unter Verwenden des U-SQL-Katalogs.

Auflisten von Elementen im U-SQL-Katalog

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

Auflisten aller Assemblys des U-SQL-Katalogs

$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
    }
}

Abrufen von Details zu einem Katalogelement

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

Speichern von Anmeldeinformationen im Katalog

Erstellen Sie innerhalb einer U-SQL-Datenbank ein credential-Objekt für eine in Azure gehostete Datenbank. Derzeit können über PowerShell lediglich U-SQL-Anmeldeinformationen als Katalogelement erstellt werden.

$dbName = "master"
$credentialName = "ContosoDbCreds"
$dbUri = "https://contoso.database.windows.net:8080"

New-AdlCatalogCredential -AccountName $adla `
          -DatabaseName $db `
          -CredentialName $credentialName `
          -Credential (Get-Credential) `
          -Uri $dbUri

Verwalten von Firewallregeln

Auflisten von Firewallregeln

Get-AdlAnalyticsFirewallRule -Account $adla

Hinzufügen einer Firewallregel

$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

Ändern einer Firewallregel

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

Entfernen einer Firewallregel

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Zulassen von Azure-IP-Adressen

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

Arbeiten mit Azure

Abrufen von Fehlerdetails

Resolve-AzError -Last

Überprüfen, ob die Ausführung auf Ihrem Windows-Computer als Administrator erfolgt

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

Suchen einer TenantID

Über einen Abonnementnamen:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

Über eine Abonnement-ID:

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

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

Über eine Domänenadresse wie z.B. „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

Auflisten Ihrer gesamten Abonnements und Mandanten-IDs

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

Nächste Schritte