Azure PowerShell을 사용하여 Azure 데이터 레이크 분석 관리Manage Azure Data Lake Analytics using Azure PowerShell

이 문서에서는 Azure PowerShell을 사용하여 Azure Data Lake Analytics 계정, 데이터 원본, 사용자 및 작업을 관리하는 방법을 설명합니다.This article describes how to manage Azure Data Lake Analytics accounts, data sources, users, and jobs by using Azure PowerShell.

사전 요구 사항Prerequisites

참고

이 문서는 새 Azure PowerShell Az 모듈을 사용하도록 업데이트되었습니다.This article has been updated to use the new Azure PowerShell Az module. AzureRM 모듈은 적어도 2020년 12월까지 버그 수정을 수신할 예정이므로 계속 사용하셔도 됩니다.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. 새 Az 모듈 및 AzureRM 호환성에 대한 자세한 내용은 새 Azure PowerShell Az 모듈 소개를 참조하세요.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az 모듈 설치 지침은 Azure PowerShell 설치를 참조하세요.For Az module installation instructions, see Install Azure PowerShell.

Data Lake Analytics와 함께 PowerShell을 사용하려면 다음과 같은 정보를 수집합니다.To use PowerShell with Data Lake Analytics, collect the following pieces of information:

  • 구독 ID: Data Lake Analytics 계정을 포함하는 Azure 구독의 ID입니다.Subscription ID: The ID of the Azure subscription that contains your Data Lake Analytics account.
  • 리소스 그룹: Data Lake Analytics 계정이 포함된 Azure 리소스 그룹의 이름입니다.Resource group: The name of the Azure resource group that contains your Data Lake Analytics account.
  • Data Lake Analytics 계정 이름: Data Lake Analytics 계정의 이름입니다.Data Lake Analytics account name: The name of your Data Lake Analytics account.
  • 기본 Data Lake Store 계정 이름: 각 Data Lake Analytics 계정에는 기본 Data Lake Store 계정이 있습니다.Default Data Lake Store account name: Each Data Lake Analytics account has a default Data Lake Store account.
  • 위치: Data Lake Analytics 계정의 위치입니다(예: "미국 동부 2" 또는 다른 지원되는 위치).Location: The location of your Data Lake Analytics account, such as "East US 2" or other supported locations.

이 자습서의 PowerShell 코드 조각은 이러한 변수를 사용하여 이 정보를 저장합니다.The PowerShell snippets in this tutorial use these variables to store this information

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

Azure에 로그인Log in to Azure

대화형 사용자 인증을 사용하여 로그인Log in using interactive user authentication

구독 ID를 사용하거나 구독 이름으로 로그인Log in using a subscription ID or by subscription name

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

인증 컨텍스트 저장Saving authentication context

Connect-AzAccount cmdlet은 항상 자격 증명을 묻는 메시지를 표시합니다.The Connect-AzAccount cmdlet always prompts for credentials. 다음 cmdlet을 사용하면 메시지가 표시되지 않게 할 수 있습니다.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

SPI(Service Principle Identity)를 사용하여 로그인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

계정 관리Manage accounts

계정 나열List 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

계정 만들기Create an account

모든 Data Lake Analytics 계정에는 로그를 저장하는 데 사용할 기본 Data Lake Store 계정이 필요합니다.Every Data Lake Analytics account requires a default Data Lake Store account that it uses for storing logs. 기존 계정을 다시 사용하거나 새 계정을 만들 수 있습니다.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

계정 정보 가져오기Get account information

계정에 대한 세부 정보를 가져옵니다.Get details about an account.

Get-AdlAnalyticsAccount -Name $adla

계정이 있는지 확인Check if an account exists

Test-AdlAnalyticsAccount -Name $adla

데이터 원본 관리Manage data sources

Azure Data Lake Analytics는 현재 다음 데이터 원본을 지원합니다.Azure Data Lake Analytics currently supports the following data sources:

모든 Data Lake Analytics 계정에는 기본 Data Lake Store 계정이 있습니다.Every Data Lake Analytics account has a default Data Lake Store account. 기본 Data Lake Store 계정은 작업 메타데이터 및 작업 감사 로그를 저장하는 데 사용됩니다.The default Data Lake Store account is used to store job metadata and job audit logs.

기본 데이터 레이크 저장소 계정 찾기Find the default Data Lake Store account

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

IsDefault 속성으로 데이터 원본 목록을 필터링하여 기본 Data Lake Store 계정을 찾을 수 있습니다.You can find the default Data Lake Store account by filtering the list of datasources by the IsDefault property:

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

데이터 원본 추가Add 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

데이터 원본 나열List 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"

U-SQL 작업 제출Submit U-SQL jobs

문자열을 U-SQL 작업으로 제출Submit 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"

파일을 U-SQL 작업으로 제출Submit a file as a U-SQL job

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

작업 나열List jobs

출력은 현재 실행 중인 작업 및 최근에 완료된 해당 작업을 포함합니다.The output includes the currently running jobs and those jobs that have recently completed.

Get-AdlJob -Account $adla

상위 N개 작업 나열List the top N jobs

기본적으로 작업 목록은 제출 시간을 기준으로 정렬됩니다.By default the list of jobs is sorted on submit time. 따라서 최근에 제출한 작업이 먼저 표시됩니다.So the most recently submitted jobs appear first. ADLA 계정은 기본적으로 작업을 180일 동안 기억하지만, Ge-AdlJob cmdlet은 기본적으로 처음 500개 작업만 반환합니다.By default, The ADLA account remembers jobs for 180 days, but the Get-AdlJob cmdlet by default returns only the first 500. 특정 수의 작업을 나열하려면 -Top 매개 변수를 사용합니다.Use -Top parameter to list a specific number of jobs.

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

작업 상태별 작업 나열List jobs by job state

-State 매개 변수 사용.Using the -State parameter. 이러한 값을 결합할 수 있습니다.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

작업 결과별 작업 나열List jobs by job result

-Result 매개 변수를 사용하여 종료된 작업이 성공적으로 완료되었는지 여부를 검색합니다.Use the -Result parameter to detect whether ended jobs completed successfully. 다음 값을 포함합니다.It has these values:

  • CancelledCancelled
  • FailedFailed
  • 없음None
  • 성공Succeeded
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

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

작업 제출자별 작업 나열List jobs by job submitter

-Submitter 매개 변수를 사용하면 작업을 제출한 사람을 식별할 수 있습니다.The -Submitter parameter helps you identify who submitted a job.

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

제출 시간별 작업 나열List jobs by submission time

-SubmittedAfter는 시간 범위로 필터링하는 데 유용합니다.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

작업 상태 가져오기Get job status

특정 작업의 상태를 가져옵니다.Get the status of a specific job.

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

작업 취소Cancel a job

Stop-AdlJob -Account $adla -JobID $jobID

작업이 완료될 때까지 대기Wait for a job to finish

작업이 완료될 때까지 Get-AdlAnalyticsJob을 반복하는 대신 Wait-AdlJob cmdlet을 사용하여 작업이 종료될 때까지 기다릴 수 있습니다.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

작업 기록 분석Analyzing job history

Azure PowerShell을 사용하여 Data Lake 분석에서 실행된 작업의 기록을 분석하는 것은 강력한 기술입니다.Using Azure PowerShell to analyze the history of jobs that have run in Data Lake analytics is a powerful technique. 사용량 및 비용에 대해 이해하는 데 사용할 수 있습니다.You can use it to gain insights into usage and cost. 작업 기록 분석 샘플 리포지토리를 확인하여 자세히 알아볼 수 있습니다.You can learn more by looking at the Job History Analysis sample repo

작업 파이프라인 및 되풀이 나열List job pipelines and recurrences

Get-AdlJobPipeline cmdlet을 사용하여 이전에 제출한 작업의 파이프라인 정보를 확인합니다.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>"

Get-AdlJobRecurrence cmdlet을 사용하여 이전에 제출한 작업의 되풀이 정보를 확인합니다.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>"

컴퓨팅 정책 관리Manage compute policies

기존 컴퓨팅 정책 나열List existing compute policies

Get-AdlAnalyticsComputePolicy cmdlet은 Data Lake Analytics 계정에 대한 컴퓨팅 정책에 대한 정보를 검색합니다.The Get-AdlAnalyticsComputePolicy cmdlet retrieves info about compute policies for a Data Lake Analytics account.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

컴퓨팅 정책 만들기Create a compute policy

New-AdlAnalyticsComputePolicy cmdlet은 Data Lake Analytics 계정에 대한 새 컴퓨팅 정책을 만듭니다.The New-AdlAnalyticsComputePolicy cmdlet creates a new compute policy for a Data Lake Analytics account. 이 예제에서는 지정된 사용자에게 제공되는 최대 AU를 50으로 설정하고, 최소 작업 우선 순위를 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

파일 관리Manage files

파일이 있는지 확인Check for the existence of a file

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

업로드 및 다운로드Uploading and downloading

파일을 업로드합니다.Upload a file.

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

전체 폴더를 재귀적으로 업로드합니다.Upload an entire folder recursively.

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

파일을 다운로드합니다.Download a file.

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

전체 폴더를 재귀적으로 다운로드합니다.Download an entire folder recursively.

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

참고

업로드 또는 다운로드 프로세스가 중단될 경우 -Resume 플래그와 함께 해당 cmdlet을 다시 실행하여 프로세스를 다시 시작할 수 있습니다.If the upload or download process is interrupted, you can attempt to resume the process by running the cmdlet again with the -Resume flag.

U-SQL 카탈로그 관리Manage the U-SQL catalog

U-SQL 카탈로그는 U-SQL 스크립트에서 공유할 수 있도록 데이터 및 코드를 구성하는 데 사용됩니다.The U-SQL catalog is used to structure data and code so they can be shared by U-SQL scripts. 카탈로그를 사용하면 가능한 가장 높은 성능으로 Azure 데이터 레이크의 데이터를 사용할 수 있습니다.The catalog enables the highest performance possible with data in Azure Data Lake. 자세한 내용은 U-SQL 카탈로그 사용을 참조하세요.For more information, see Use U-SQL catalog.

U-SQL 카탈로그의 항목 나열List 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"

모든 어셈블리 U-SQL 카탈로그 나열List 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
    }
}

카탈로그 항목에 대한 세부 정보 가져오기Get 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"

카탈로그에 자격 증명 저장Store credentials in the catalog

U-SQL 데이터베이스 내에서 Azure에서 호스트되는 데이터베이스에 대한 자격 증명 개체를 만듭니다.Within a U-SQL database, create a credential object for a database hosted in Azure. 현재 U-SQL 자격 증명은 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

방화벽 규칙 관리Manage firewall rules

방화벽 규칙 나열List firewall rules

Get-AdlAnalyticsFirewallRule -Account $adla

방화벽 규칙 추가Add 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

방화벽 규칙 수정Modify a firewall rule

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

방화벽 규칙 제거Remove a firewall rule

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

Azure IP 주소 허용Allow Azure IP addresses

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

Azure 작업Working with Azure

오류 세부 정보 가져오기Get error details

Resolve-AzError -Last

Windows 컴퓨터에서 관리자로 실행 중인지 확인Verify 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)  
}

TenantID 찾기Find a TenantID

구독 이름에서From a subscription name:

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

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

구독 ID에서: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

"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

모든 구독 및 테넌트 ID 나열List 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
}

템플릿을 사용하여 Data Lake Analytics 계정 만들기Create a Data Lake Analytics account using a template

템플릿을 사용하여 Data Lake Analytics 계정 만들기 샘플을 사용하는 Azure 리소스 그룹 템플릿을 사용할 수도 있습니다.You can also use an Azure Resource Group template using the following sample: Create a Data Lake Analytics account using a template

다음 단계Next steps