Administración de Análisis de Azure Data Lake mediante Azure PowerShellManage Azure Data Lake Analytics using 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.This article describes how to manage Azure Data Lake Analytics accounts, data sources, users, and jobs by using Azure PowerShell.

requisitos previosPrerequisites

Nota

Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Aún puede usar el módulo de AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para más información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obtener instrucciones sobre la instalación del módulo Az, consulte Instalación de Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Para usar PowerShell con Data Lake Analytics, recopile la siguiente información:To use PowerShell with Data Lake Analytics, collect the following pieces of information:

  • Id. de suscripción: el identificador de la suscripción de Azure que contiene su cuenta de Data Lake Analytics.Subscription ID: The ID of the Azure subscription that contains your Data Lake Analytics account.
  • Grupo de recursos: el nombre del grupo de recursos de Azure que contiene la cuenta de Data Lake Analytics.Resource group: The name of the Azure resource group that contains your Data Lake Analytics account.
  • Nombre de la cuenta de Data Lake Analytics: nombre de la cuenta de Data Lake Analytics.Data Lake Analytics account name: The name of your Data Lake Analytics account.
  • Nombre de la cuenta predeterminada de Data Lake Store: cada cuenta de Data Lake Analytics tiene una cuenta de Data Lake Store predeterminada.Default Data Lake Store account name: Each Data Lake Analytics account has a default Data Lake Store account.
  • Ubicación: la ubicación de la cuenta de Data Lake Analytics como "Este de EE. UU. 2" u otras ubicaciones admitidas.Location: The location of your Data Lake Analytics account, such as "East US 2" or other supported locations.

Los fragmentos de código de PowerShell de este tutorial usan estas variables para almacenar esta informaciónThe PowerShell snippets in this tutorial use these variables to store this information

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

Inicio de sesión en AzureLog in to Azure

Inicio de sesión mediante la autenticación interactiva del usuarioLog in using interactive user authentication

Inicie sesión con un identificador de suscripción o por nombre de la suscripciónLog in using a subscription ID or by subscription name

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname 

Guardar el contexto de autenticaciónSaving authentication context

El cmdlet Connect-AzAccount siempre pide las credenciales.The Connect-AzAccount cmdlet always prompts for credentials. Puede evitar que se le pidan mediante los cmdlets siguientes:You can avoid being prompted by using the following cmdlets:

# 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)Log in using a 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

Administrar cuentasManage accounts

Enumeración de cuentasList accounts

# 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 cuentaCreate an account

Cada cuenta de Data Lake Analytics requiere una cuenta predeterminada de Data Lake Store que se usa para almacenar registros.Every Data Lake Analytics account requires a default Data Lake Store account that it uses for storing logs. Puede reutilizar una cuenta existente o crear una nueva.You can reuse an existing account or create an account.

# 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 cuentaGet account information

Obtener detalles acerca de una cuenta.Get details about an account.

Get-AdlAnalyticsAccount -Name $adla

Comprobando de la existencia de una cuentaCheck if an account exists

Test-AdlAnalyticsAccount -Name $adla

Administración de orígenes de datosManage data sources

Actualmente, Azure Data Lake Analytics admite los siguientes orígenes de datos:Azure Data Lake Analytics currently supports the following data sources:

Cada cuenta de Data Lake Analytics tiene una cuenta de Data Lake Store predeterminada.Every Data Lake Analytics account has a default Data Lake Store account. La cuenta predeterminada de Almacén de Data Lake sirve para almacenar los registros de auditoría y de metadatos de trabajos.The default Data Lake Store account is used to store job metadata and job audit logs.

Búsqueda de la cuenta predeterminada de Almacén de Data LakeFind the default Data Lake Store account

$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:You can find the default Data Lake Store account by filtering the list of datasources by the IsDefault property:

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

Agregar un origen de datosAdd a data source


# 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 datosList data sources

# 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-SQLSubmit U-SQL jobs

Envío de una cadena como un trabajo de U-SQLSubmit a string as a U-SQL job

$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-SQLSubmit a file as a U-SQL job

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

Enumeración de trabajosList jobs

El resultado incluye los trabajos actualmente en ejecución y aquellos que se han completado recientemente.The output includes the currently running jobs and those jobs that have recently completed.

Get-AdlJob -Account $adla

Enumere los principales trabajos de NList the top N jobs

De forma predeterminada, la lista de trabajos se ordena por hora de envío.By default the list of jobs is sorted on submit time. Así, los trabajos enviados más recientemente aparecen en primer lugar.So the most recently submitted jobs appear first. De forma predeterminada, la cuenta de ADLA recuerda los trabajos durante 180 días, pero el cmdlet Get-AdlJob devuelve solo los primeros 500.By default, The ADLA account remembers jobs for 180 days, but the Get-AdlJob cmdlet by default returns only the first 500. Use el parámetro -Top para mostrar un número específico de trabajos.Use -Top parameter to list a specific number of jobs.

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

Enumeración de trabajos por estado de trabajoList jobs by job state

Mediante el parámetro -State.Using the -State parameter. Puede combinar cualquiera de estos valores:You can combine any of these values:

  • 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 trabajoList jobs by job result

Use el parámetro -Result para detectar si los trabajos finalizados se han realizado correctamente.Use the -Result parameter to detect whether ended jobs completed successfully. Tiene estos valores:It has these values:

  • CanceladoCancelled
  • Con errorFailed
  • NoneNone
  • SucceededSucceeded
# 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 trabajoList jobs by job submitter

El parámetro -Submitter ayuda a identificar quién ha enviado un trabajo.The -Submitter parameter helps you identify who submitted a job.

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

Enumeración de trabajos por hora de envíoList jobs by submission time

-SubmittedAfter es útil al filtrar por un intervalo de tiempo.The -SubmittedAfter is useful in filtering to a time range.

# 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 trabajoGet job status

Obtenga el estado de un trabajo específico.Get the status of a specific job.

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

Cancelación de un trabajoCancel a job

Stop-AdlJob -Account $adla -JobID $jobID

Espera de fin de un trabajoWait for a job to finish

En lugar de repetir Get-AdlAnalyticsJob hasta que finalice un trabajo, puede usar el cmdlet Wait-AdlJob para esperar a que finalice el trabajo.Instead of repeating Get-AdlAnalyticsJob until a job finishes, you can use the Wait-AdlJob cmdlet to wait for the job to end.

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

Análisis del historial de trabajoAnalyzing job history

El uso de Azure PowerShell para analizar el historial de trabajos que se han ejecutado en Data Lake Analytics es una técnica eficaz.Using Azure PowerShell to analyze the history of jobs that have run in Data Lake analytics is a powerful technique. Puede usarla para obtener información sobre el uso y el costo.You can use it to gain insights into usage and cost. Puede obtener más información examinando el repositorio de ejemplo del análisis del historial de trabajoYou can learn more by looking at the Job History Analysis sample repo

Enumeración de canalizaciones y repeticiones de trabajosList job pipelines and recurrences

Use el cmdlet Get-AdlJobPipeline para ver la información de canalización de trabajos enviados previamente.Use the Get-AdlJobPipeline cmdlet to see the pipeline information previously submitted jobs.

$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.Use the Get-AdlJobRecurrence cmdlet to see the recurrence information for previously submitted jobs.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Administración de nodos directivas de procesoManage compute policies

Lista de directivas de proceso existentesList existing compute policies

El cmdlet Get-AdlAnalyticsComputePolicy recupera información sobre las directivas de proceso de una cuenta de Data Lake Analytics.The Get-AdlAnalyticsComputePolicy cmdlet retrieves info about compute policies for a Data Lake Analytics account.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Creación de una directiva de procesoCreate a compute policy

El cmdlet New-AdlAnalyticsComputePolicy crea una nueva directiva de proceso para una cuenta de Data Lake Analytics.The New-AdlAnalyticsComputePolicy cmdlet creates a new compute policy for a Data Lake Analytics account. 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.This example sets the maximum AUs available to the specified user to 50, and the minimum job priority to 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 archivosManage files

Compruebe la existencia de un archivo.Check for the existence of a file.

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

Carga y descarga de archivosUploading and downloading

Cargar un archivo.Upload a file.

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

Cargue una carpeta completa de forma recursiva.Upload an entire folder recursively.

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

Descargar un archivo.Download a file.

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

Descargue una carpeta completa de forma recursiva.Download an entire folder recursively.

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.If the upload or download process is interrupted, you can attempt to resume the process by running the cmdlet again with the -Resume flag.

Administración del catálogo de U-SQLManage the U-SQL catalog

El catálogo de U-SQL se usa para estructurar datos y código, para que puedan compartirse mediante scripts de U-SQL.The U-SQL catalog is used to structure data and code so they can be shared by U-SQL scripts. El catálogo permite el mayor rendimiento posible con los datos en Azure Data Lake.The catalog enables the highest performance possible with data in Azure Data Lake. Para obtener más información, consulte Uso del catálogo de U-SQL.For more information, see Use U-SQL catalog.

Enumerar elementos en el catálogo de U-SQLList items in the U-SQL catalog

# 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-SQLList all the assemblies the U-SQL catalog

$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álogoGet details about a catalog item

# 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álogoStore credentials in the catalog

Dentro de una base de datos U-SQL, cree un objeto de credenciales para una base de datos hospedada en Azure.Within a U-SQL database, create a credential object for a database hosted in Azure. Actualmente, las credenciales U-SQL son el único tipo de elemento de catálogo que se puede crear a través de PowerShell.Currently, U-SQL credentials are the only type of catalog item that you can create through 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 firewallManage firewall rules

Enumerar reglas de firewallList firewall rules

Get-AdlAnalyticsFirewallRule -Account $adla

Incorporación de una regla de firewallAdd a firewall rule

$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 firewallModify a firewall rule

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

Eliminación de una regla de firewallRemove a firewall rule

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Permitir direcciones IP de AzureAllow Azure IP addresses

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

Trabajo con AzureWorking with Azure

Ver detalles del errorGet error details

Resolve-AzError -Last

Comprobación de si se ejecuta un administrador en el equipo WindowsVerify if you are running as an Administrator on your Windows machine

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

Buscar un elemento TenantIDFind a TenantID

A partir de un nombre de suscripción:From a subscription name:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

A partir de un identificador de suscripción:From a subscription ID:

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"From a domain address such as "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 inquilinoList all your subscriptions and tenant IDs

$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 plantillaCreate a Data Lake Analytics account using a template

También puede usar una plantilla del grupo de recursos de Azure mediante el siguiente ejemplo: Crear una cuenta de Data Lake Analytics mediante una plantillaYou can also use an Azure Resource Group template using the following sample: Create a Data Lake Analytics account using a template

Pasos siguientesNext steps