Gerir a Análise do Azure Data Lake com o Azure PowerShell

Importante

O Azure Data Lake Analytics descontinuado a 29 de fevereiro de 2024. Saiba mais com este anúncio.

Para análise de dados, a sua organização pode utilizar o Azure Synapse Analytics ou o Microsoft Fabric.

Este artigo descreve como gerir contas, origens de dados, utilizadores e tarefas do Azure Data Lake Analytics com Azure PowerShell.

Pré-requisitos

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Para utilizar o PowerShell com Data Lake Analytics, recolha as seguintes informações:

  • ID da Subscrição: o ID da subscrição do Azure que contém a sua conta Data Lake Analytics.
  • Grupo de recursos: o nome do grupo de recursos do Azure que contém a sua conta Data Lake Analytics.
  • Data Lake Analytics nome da conta: o nome da sua conta de Data Lake Analytics.
  • Nome predefinido da conta do Data Lake Store: cada conta Data Lake Analytics tem uma conta predefinida do Data Lake Store.
  • Localização: a localização da sua conta Data Lake Analytics, como "E.U.A. Leste 2" ou outras localizações suportadas.

Os fragmentos de PowerShell neste tutorial utilizam estas variáveis para armazenar estas informações

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

Iniciar sessão no Azure

Iniciar sessão com a autenticação interativa do utilizador

Iniciar sessão com um ID de subscrição ou pelo nome da subscrição

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

A guardar o contexto de autenticação

O Connect-AzAccount cmdlet pede sempre credenciais. Pode evitar ser solicitado através dos seguintes cmdlets:

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

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

Iniciar sessão com uma Identidade do Principal de Serviço (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

Gerir contas

Contas de lista

# 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

Criar uma conta

Cada conta de Data Lake Analytics requer uma conta de Data Lake Store predefinida que utiliza para armazenar registos. Pode reutilizar uma conta existente ou criar uma conta.

# 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

Obter informações da conta

Obtenha detalhes sobre uma conta.

Get-AdlAnalyticsAccount -Name $adla

Verificar se existe uma conta

Test-AdlAnalyticsAccount -Name $adla

Gerir origens de dados

Atualmente, o Azure Data Lake Analytics suporta as seguintes origens de dados:

Cada conta Data Lake Analytics tem uma conta predefinida do Data Lake Store. A conta predefinida do Data Lake Store é utilizada para armazenar metadados de tarefas e registos de auditoria de tarefas.

Localizar a conta predefinida do Data Lake Store

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

Pode encontrar a conta predefinida do Data Lake Store ao filtrar a lista de origens de dados pela IsDefault propriedade :

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

Adicionar uma origem de dados


# 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

Listar origens de dados

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

Submeter tarefas U-SQL

Submeter uma cadeia como uma tarefa 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"

Submeter um ficheiro como uma tarefa U-SQL

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

Listar tarefas

A saída inclui as tarefas atualmente em execução e as tarefas que foram concluídas recentemente.

Get-AdlJob -Account $adla

Listar as principais tarefas N

Por predefinição, a lista de tarefas está ordenada no tempo de submissão. Assim, as tarefas submetidas mais recentemente aparecem primeiro. Por predefinição, a conta do ADLA memoriza as tarefas durante 180 dias, mas o cmdlet Get-AdlJob por predefinição devolve apenas os primeiros 500. Utilize o parâmetro -Top para listar um número específico de tarefas.

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

Listar tarefas por estado da tarefa

Utilizar o -State parâmetro . Pode combinar qualquer um destes valores:

  • 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

Listar tarefas por resultado da tarefa

Utilize o -Result parâmetro para detetar se as tarefas terminadas foram concluídas com êxito. Tem estes valores:

  • Cancelado
  • Com falhas
  • Nenhuma
  • Com êxito
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

Listar tarefas por submissão de tarefas

O -Submitter parâmetro ajuda-o a identificar quem submeteu uma tarefa.

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

Listar tarefas por hora de submissão

O -SubmittedAfter é útil na filtragem para um intervalo de 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

Obter o estado da tarefa

Obtenha o estado de uma tarefa específica.

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

Cancelar uma tarefa

Stop-AdlJob -Account $adla -JobID $jobID

Aguarde pela conclusão de um trabalho

Em vez de repetir Get-AdlAnalyticsJob até que uma tarefa termine, pode utilizar o Wait-AdlJob cmdlet para aguardar que a tarefa termine.

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

Listar pipelines e periodicidades de tarefas

Utilize o Get-AdlJobPipeline cmdlet para ver as informações do pipeline que foram submetidas anteriormente.

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

Utilize o Get-AdlJobRecurrence cmdlet para ver as informações de periodicidade das tarefas submetidas anteriormente.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Gerir políticas de computação

Listar políticas de computação existentes

O Get-AdlAnalyticsComputePolicy cmdlet obtém informações sobre as políticas de computação de uma conta Data Lake Analytics.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Criar uma política de computação

O New-AdlAnalyticsComputePolicy cmdlet cria uma nova política de computação para uma conta Data Lake Analytics. Este exemplo define o máximo de AUs disponíveis para o utilizador especificado para 50 e a prioridade mínima da tarefa para 250.

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

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

Gerir ficheiros

Verificar a existência de um ficheiro

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

Carregar e transferir

Carregar um ficheiro.

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

Carregar uma pasta inteira recursivamente.

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

Transfira um ficheiro.

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

Transfira uma pasta inteira de forma recursiva.

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

Nota

Se o processo de carregamento ou transferência for interrompido, pode tentar retomar o processo ao executar o cmdlet novamente com o -Resume sinalizador .

Gerir o catálogo U-SQL

O catálogo U-SQL é utilizado para estruturar dados e código para que possam ser partilhados por scripts U-SQL. O catálogo permite o maior desempenho possível com dados no Azure Data Lake. Para obter mais informações, veja Utilizar catálogo U-SQL.

Listar itens no catálogo 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"

Listar todas as assemblagens do catálogo 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
    }
}

Obter detalhes sobre um item de catálogo

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

Armazenar credenciais no catálogo

Numa base de dados U-SQL, crie um objeto de credencial para uma base de dados alojada no Azure. Atualmente, as credenciais U-SQL são o único tipo de item de catálogo que pode criar através do 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

Gerir regras da firewall

Listar regras de firewall

Get-AdlAnalyticsFirewallRule -Account $adla

Adicionar uma regra de 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

Modificar uma regra de firewall

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

Remover uma regra de firewall

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Permitir endereços IP do Azure

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

Trabalhar com o Azure

Obter detalhes do erro

Resolve-AzError -Last

Verifique se está a ser executado como Administrador no seu computador Windows

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

Localizar um TenantID

A partir de um nome de subscrição:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

A partir de um ID de subscrição:

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

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

A partir de um endereço de domínio, como "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

Listar todas as suas subscrições e IDs de inquilino

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

Passos seguintes