Administración de Análisis de Azure Data Lake mediante Azure PowerShell

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.

Prerequisites

Nota

En este artículo se usa el módulo Az de PowerShell, que es el módulo de PowerShell que se recomienda para interactuar con Azure. Para empezar a trabajar con el módulo Az de PowerShell, consulte Instalación de Azure PowerShell. 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 la siguiente información:

  • Identificador de suscripción: el identificador de la suscripción de Azure que contiene su 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: el nombre de la cuenta de Data Lake Analytics.
  • Nombre de la cuenta predeterminada de Data Lake Store: cada cuenta de Data Lake Analytics tiene una cuenta de Data Lake Store predeterminada.
  • 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 mediante la autenticación interactiva del usuario

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

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

Guardar el contexto de autenticación

El cmdlet Connect-AzAccount siempre pide las credenciales. Puede evitar que se le pidan mediante los cmdlets siguientes:

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

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

Inicio de sesión con 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

Enumeración de 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 se usa para almacenar registros. Puede reutilizar una cuenta existente o crear una nueva.

# 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

Obtener detalles acerca de una cuenta.

Get-AdlAnalyticsAccount -Name $adla

Comprobando de la existencia de una cuenta

Test-AdlAnalyticsAccount -Name $adla

Administración de orígenes de datos

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

Cada cuenta de Data Lake Analytics tiene una cuenta de Data Lake Store predeterminada. La cuenta predeterminada de Almacén de Data Lake sirve para almacenar los registros de auditoría y de metadatos 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 si filtra la lista de orígenes de datos por la propiedad IsDefault:

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

Agregar 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

Envío de una cadena como un 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

El resultado incluye los trabajos actualmente en ejecución y aquellos que se han completado recientemente.

Get-AdlJob -Account $adla

Enumere los principales trabajos de N

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

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

Enumeración de trabajos por estado de trabajo

Mediante el parámetro -State. 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 del trabajo

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

  • Cancelado
  • Con error
  • None
  • Correcto
# 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 del trabajo

El parámetro -Submitter ayuda a identificar quién ha enviado un trabajo.

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

Enumeración de trabajos por hora de envío

-SubmittedAfter es útil al 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 de estado del trabajo

Obtenga el estado de un trabajo específico.

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

Cancelación de un trabajo

Stop-AdlJob -Account $adla -JobID $jobID

Espera de fin de un trabajo

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

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

Enumeración de canalizaciones y repeticiones de trabajos

Use el cmdlet Get-AdlJobPipeline para ver la información de canalización de trabajos enviados previamente.

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

Use el cmdlet Get-AdlJobRecurrence para ver la información de repetición de trabajos enviados previamente.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Administración de nodos directivas de proceso

Lista de directivas de proceso existentes

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

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Creación de una directiva de proceso

El cmdlet New-AdlAnalyticsComputePolicy crea una nueva directiva de proceso para una cuenta de Data Lake Analytics. En este ejemplo se establece el número máximo de unidades de asignación (AU) 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

Administración de archivos

Comprobación de la existencia de un archivo

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

Carga y descarga de archivos

Cargar 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

Descargar 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 opción -Resume.

Administración del catálogo de U-SQL

El catálogo de U-SQL se usa para estructurar datos y código, para que puedan compartirse mediante scripts de U-SQL. El catálogo permite el mayor 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 conjuntos 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

Dentro de una base de datos U-SQL, cree un objeto de credenciales para una base de datos hospedada en Azure. Actualmente, las credenciales U-SQL son el único tipo de elemento de catálogo que se 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

Incorporació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

Ver detalles del error

Resolve-AzError -Last

Comprobación de si se ejecuta un administrador en el equipo Windows

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

Buscar un elemento TenantID

A partir de un nombre de suscripción:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

A partir de 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

A partir de 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

Enumeración de todas las suscripciones e identificadores de inquilino

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

Creación de una cuenta de Data Lake Analytics mediante una plantilla

También puede usar una plantilla de Grupo de recursos de Azure con el siguiente ejemplo: Creación de una cuenta de Data Lake Analytics mediante una plantilla

Pasos siguientes