Compartir a través de


Administración de Azure Data Lake Analytics mediante Azure PowerShell

Importante

Azure Data Lake Analytics se retirará el 29 de febrero de 2024. Obtenga más información con este anuncio.

Para el análisis de datos, su organización puede usar Azure Synapse Analytics o Microsoft Fabric.

En este artículo se describe cómo administrar cuentas, orígenes de datos, usuarios y trabajos de Azure Data Lake Analytics mediante Azure PowerShell.

Prerrequisitos

Nota:

Se recomienda usar el módulo de PowerShell de Azure Az para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Para usar PowerShell con Data Lake Analytics, recopile los siguientes fragmentos de información:

  • Identificador de suscripción: el identificador de la suscripción de Azure que contiene la cuenta de Data Lake Analytics.
  • Grupo de recursos: el nombre del grupo de recursos de Azure que contiene la cuenta de Data Lake Analytics.
  • Nombre de la cuenta de Data Lake Analytics: nombre de la cuenta de Data Lake Analytics.
  • Nombre de cuenta predeterminado de Data Lake Store: cada cuenta de Data Lake Analytics tiene una cuenta predeterminada de Data Lake Store.
  • Ubicación: la ubicación de la cuenta de Data Lake Analytics, como "Este de EE. UU. 2" u otras ubicaciones admitidas.

Los fragmentos de código de PowerShell de este tutorial usan estas variables para almacenar esta información.

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

Inicio de sesión en Azure

Inicio de sesión con autenticación de usuario interactiva

Inicie sesión con un identificador de suscripción o por nombre de suscripción.

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

Guardar contexto de autenticación

El Connect-AzAccount cmdlet siempre solicita credenciales. Puede evitar que se le solicite mediante los siguientes cmdlets:

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

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

Iniciar sesión usando una identidad de entidad de servicio (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

Administrar cuentas

Listar cuentas

# 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

Crear una cuenta

Cada cuenta de Data Lake Analytics requiere una cuenta predeterminada de Data Lake Store que usa para almacenar registros. Puede reutilizar una cuenta existente o crear una cuenta.

# 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

Obtención de información de la cuenta

Obtenga detalles sobre una cuenta.

Get-AdlAnalyticsAccount -Name $adla

Comprobar si existe una cuenta

Test-AdlAnalyticsAccount -Name $adla

Administrar orígenes de datos

Azure Data Lake Analytics admite actualmente los siguientes orígenes de datos:

Cada cuenta de Data Lake Analytics tiene una cuenta predeterminada de Data Lake Store. La cuenta predeterminada de Data Lake Store se usa para almacenar los metadatos del trabajo y los registros de auditoría de trabajos.

Búsqueda de la cuenta predeterminada de Almacén de Data Lake

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

Puede encontrar la cuenta predeterminada de Data Lake Store filtrando la lista de orígenes de datos por la IsDefault propiedad :

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

Adición de un origen de datos


# 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

Enumerar orígenes de datos

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

Envío de trabajos de U-SQL

Enviar una cadena como trabajo de 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"

Envío de un archivo como un trabajo de U-SQL

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

Enumeración de trabajos

La salida incluye los trabajos actualmente en ejecución y los trabajos que se han completado recientemente.

Get-AdlJob -Account $adla

Enumeración de los N principales trabajos

De forma predeterminada, la lista de trabajos se ordena en tiempo de envío. Por lo tanto, los trabajos enviados más recientemente aparecen primero. De forma predeterminada, la cuenta de ADLA recuerda trabajos durante 180 días, pero el cmdlet Get-AdlJob de forma predeterminada devuelve solo los primeros 500. Use -Top parámetro para enumerar un número específico de trabajos.

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

Enumeración de trabajos por estado de trabajo

Uso del -State parámetro . Puede combinar cualquiera de estos 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

Enumeración de trabajos por resultado de trabajo

Use el -Result parámetro para detectar si los trabajos finalizados se completaron correctamente. Tiene estos valores:

  • Cancelado
  • Fracasado
  • Ninguno
  • Tuvo éxito
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

Enumeración de trabajos por remitente de trabajos

El -Submitter parámetro le ayuda a identificar quién envió un trabajo.

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

Enumeración de trabajos por tiempo de envío

El -SubmittedAfter es útil para filtrar por un intervalo de tiempo.

# 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

Obtención del estado del trabajo

Obtenga el estado de un trabajo específico.

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

Cancelar un trabajo

Stop-AdlJob -Account $adla -JobID $jobID

Espere a que finalice un trabajo

En lugar de repetir Get-AdlAnalyticsJob hasta que finalice un trabajo, puede usar el Wait-AdlJob cmdlet para esperar a que finalice el trabajo.

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

Enumerar flujos de trabajo y repeticiones

Utilice el Get-AdlJobPipeline cmdlet para ver la información del pipeline de los trabajos enviados previamente.

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

Use el Get-AdlJobRecurrence cmdlet para ver la información de periodicidad de los trabajos enviados anteriormente.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Administración de directivas de cómputo

Listar políticas de cómputo existentes

El Get-AdlAnalyticsComputePolicy cmdlet recupera información sobre las directivas de proceso de una cuenta de Data Lake Analytics.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Crear una política de cómputo

El New-AdlAnalyticsComputePolicy cmdlet crea una nueva directiva de proceso para una cuenta de Data Lake Analytics. En este ejemplo se establece el número máximo de RU disponibles para el usuario especificado en 50 y la prioridad mínima del trabajo en 250.

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

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

Administrar archivos

Comprobación de la existencia de un archivo

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

Carga y descarga

Cargue un archivo.

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

Cargue una carpeta completa de forma recursiva.

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

Descargue un archivo.

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

Descargue una carpeta completa de forma recursiva.

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

Nota:

Si se interrumpe el proceso de carga o descarga, puede intentar reanudar el proceso ejecutando el cmdlet de nuevo con la -Resume marca .

Administración del catálogo de U-SQL

El catálogo de U-SQL se usa para estructurar datos y código para que los scripts de U-SQL puedan compartirlos. El catálogo habilita el máximo rendimiento posible con los datos en Azure Data Lake. Para obtener más información, consulte Uso del catálogo de U-SQL.

Enumerar elementos en el catálogo de 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"

Enumeración de todos los ensamblados del catálogo de 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
    }
}

Obtener detalles sobre un elemento 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"

Almacenamiento de credenciales en el catálogo

En una base de datos U-SQL, cree un objeto de credencial para una base de datos hospedada en Azure. Actualmente, las credenciales de U-SQL son el único tipo de elemento de catálogo que puede crear a través de 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

Administración de las reglas del firewall

Enumerar reglas de firewall

Get-AdlAnalyticsFirewallRule -Account $adla

Adición de una regla 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

Modificación de una regla de firewall

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

Eliminación de una regla de firewall

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Permitir direcciones IP de Azure

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

Trabajo con Azure

Obtención de detalles del error

Resolve-AzError -Last

Compruebe si está usando una cuenta de administrador en su máquina Windows

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

Buscar un TenantID

A partir de un nombre de suscripción:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

Desde un identificador de suscripción:

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

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

Desde una dirección de dominio 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

Enumera todas tus suscripciones e identificadores de arrendatario.

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

Pasos siguientes