Управление аналитикой озера данных Azure с помощью Azure PowerShell

Важно!

Azure Data Lake Analytics прекращена 29 февраля 2024 г. Дополнительные сведения см. в этом объявлении.

Для аналитики данных ваша организация может использовать Azure Synapse Analytics или Microsoft Fabric.

В этой статье описано, как управлять учетными записями, источниками данных, пользователями и заданиями Azure Data Lake Analytics с помощью Azure PowerShell.

Предварительные требования

Примечание

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Чтобы использовать PowerShell с Data Lake Analytics, получите следующие сведения:

  • Идентификатор подписки — идентификатор подписки Azure, в которую входит ваша учетная запись Data Lake Analytics.
  • Группа ресурсов — имя группы ресурсов Azure, содержащей учетную запись Data Lake Analytics.
  • Имя учетной записи — имя вашей учетной записи Data Lake Analytics.
  • Имя учетной записи Data Lake Store по умолчанию — каждая учетная запись Data Lake Analytics содержит учетную запись Data Lake Store по умолчанию.
  • Расположение — расположение учетной записи Data Lake Analytics, например "Восточная часть США 2" или другое поддерживаемое расположение.

Во фрагментах кода PowerShell в этом руководстве для хранения такой информации используются следующие переменные:

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

Вход в Azure

Вход с использованием интерактивной аутентификации пользователей

Войдите, используя идентификатор или имя подписки.

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

Сохранение контекста аутентификации

При использовании командлета Connect-AzAccount всегда запрашиваются учетные данные. Избежать появления запроса можно с помощью следующих командлетов:

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

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

Вход с использованием удостоверения субъекта-службы (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

Управление учетными записями

Список учетных записей

# 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

Создание учетной записи

Для каждой учетной записи Data Lake Analytics необходима учетная запись Data Lake Store по умолчанию, которая используется для хранения журналов. Можно повторно использовать существующую учетную запись или создать новую.

# 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

Получение данных об учетной записи

Получение сведений об учетной записи.

Get-AdlAnalyticsAccount -Name $adla

Проверка наличия учетной записи

Test-AdlAnalyticsAccount -Name $adla

Управление источниками данных

Azure Data Lake Analytics в настоящее время поддерживает следующие источники данных:

Для каждой учетной записи Data Lake Analytics существует учетная запись Data Lake Store по умолчанию. Учетная запись хранения озера данных по умолчанию используется для хранения метаданных задания и журналов аудита задания.

Поиск учетной записи хранения озера данных по умолчанию

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

Чтобы найти учетную запись по умолчанию для Data Lake Store, отфильтруйте список источников данных по свойству IsDefault:

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

Добавление источника данных


# 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

Получение списка источников данных

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

Отправка заданий U-SQL

Отправка строки как задания 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"

Отправка файла как задания U-SQL

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

Список заданий

Результаты включают в себя текущие и недавно завершенные задания.

Get-AdlJob -Account $adla

Получение списка последних N заданий

По умолчанию список заданий сортируется по времени отправки. Поэтому в его начале находятся последние отправленные задания. По умолчанию в учетной записи ADLA сохраняются сведения о заданиях за 180 дней, но командлет Ge-AdlJob по умолчанию возвращает только первые 500 заданий. Чтобы получить список определенного количества заданий, используйте параметр -Top.

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

Получение списка заданий по их состоянию

Использование параметра -State. Вы можете использовать любое сочетание следующих значений:

  • 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

Получение списка заданий по их результатам

Используйте параметр -Result, чтобы определить, успешно ли выполнено завершенное задание. Возможны следующие значения:

  • Отменено
  • Сбой
  • Нет
  • Выполнено
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

Получение списка заданий по их отправителям

Параметр -Submitter позволяет определить, кто отправил это задание.

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

Получение списка заданий по времени отправки

Параметр -SubmittedAfter используется для фильтрации по диапазону времени.

# 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

Получение состояния задания

Получите состояние конкретного задания.

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

Отмена задания

Stop-AdlJob -Account $adla -JobID $jobID

Ожидание завершения задания

Вместо того чтобы повторно выполнять Get-AdlAnalyticsJob, пока задание не завершится, можно использовать командлет Wait-AdlJob, чтобы дождаться завершения задания.

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

Получение списка конвейеров и повторений заданий

Используйте командлет Get-AdlJobPipeline, чтобы получить сведения о конвейерах для ранее отправленных заданий.

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

Используйте командлет Get-AdlJobRecurrence, чтобы получить сведения о повторениях для ранее отправленных заданий.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

Управление политиками вычислений

Список существующих политик вычислений

Командлет Get-AdlAnalyticsComputePolicy извлекает информацию о политиках вычислений для учетной записи Data Lake Analytics.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

Создание политики вычислений

Командлет New-AdlAnalyticsComputePolicy создает новую политику вычислений для учетной записи Data Lake Analytics. В этом примере для указанного пользователя устанавливается максимальное число единиц использования аналитики (50) и минимальный приоритет задания (250).

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

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

Управление файлами

Проверка наличия файла

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

Отправка и скачивание

Отправка файла.

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

Рекурсивная отправка всей папки.

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

Скачивание файла.

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

Рекурсивное скачивание всей папки.

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

Примечание

Если процесс отправки или скачивания прервался, вы можете попытаться возобновить его, выполнив командлет еще раз с флагом -Resume.

Управление каталогом U-SQL

Каталог U-SQL используется для структурирования данных и кода, чтобы их могли совместно использовать сценарии U-SQL. Каталог обеспечивает максимальную производительность, возможную с данными в озере данных Azure. Дополнительные сведения см. в разделе Использование каталога U-SQL.

Получение списка элементов в каталоге 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"

Получение списка всех сборок в каталоге 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
    }
}

Получение сведений об элементе каталога

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

Хранение учетных данных в каталоге

В базе данных U-SQL создайте объект учетных данных для базы данных, размещенной в Azure. В настоящее время учетные данные U-SQL — это единственный тип элементов каталога, который можно создавать с помощью 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

Управление правилами брандмауэра

Вывод списка правил брандмауэра

Get-AdlAnalyticsFirewallRule -Account $adla

Добавление правила брандмауэра

$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

Изменение правила брандмауэра

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

Удаление правила брандмауэра

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Разрешение IP-адресов Azure

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

Работа с Azure

Получение сведений об ошибке

Resolve-AzError -Last

Проверка того, что вход выполнен от имени администратора на компьютере Windows

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

Поиск TenantID

По имени подписки:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

По идентификатору подписки:

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

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

По адресу домена, например 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

Получение списка всех подписок и идентификаторов клиентов

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

Дальнейшие действия