Поделиться через


Управление Azure Data Lake Analytics с помощью 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. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция Azure PowerShell с AzureRM на Az.

Чтобы использовать PowerShell с Data Lake Analytics, соберите следующие фрагменты информации:

  • Идентификатор подписки: идентификатор подписки Azure, содержащей учетную запись Data Lake Analytics.
  • Группа ресурсов: имя группы ресурсов Azure, содержащей учетную запись Data Lake Analytics.
  • Имя учетной записи 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 по умолчанию. Учетная запись Data Lake Store по умолчанию используется для хранения метаданных заданий и журналов аудита заданий.

Найти учетную запись 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 дней, но командлет Get-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 "[email protected]"

Список задач по времени отправки

Это -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. В этом примере максимальное число единиц AUS, доступных указанному пользователю, имеет значение 50, а минимальный приоритет задания — 250.

$userObjectId = (Get-AzAdUser -SearchString "[email protected]").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 Data Lake. Дополнительные сведения см. в разделе "Использование каталога 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)  
}

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

От имени подписки:

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
}

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