다음을 통해 공유


Azure PowerShell을 사용하여 Azure Data Lake Analytics 관리

중요합니다

Azure Data Lake Analytics는 2024년 2월 29일에 사용 중지되었습니다. 에 대해 더 알고 싶다면 이 공지을 확인하세요.

데이터 분석을 위해 조직은 Azure Synapse Analytics 또는 Microsoft Fabric 사용할 수 있습니다.

이 문서에서는 Azure PowerShell을 사용하여 Azure Data Lake Analytics 계정, 데이터 원본, 사용자 및 작업을 관리하는 방법을 설명합니다.

필수 조건

비고

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

Data Lake Analytics에서 PowerShell을 사용하려면 다음 정보를 수집합니다.

  • 구독 ID: Data Lake Analytics 계정이 포함된 Azure 구독의 ID입니다.
  • 리소스 그룹: 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에 로그인

대화형 사용자 인증을 사용하여 로그인

구독 ID 또는 구독 이름을 사용하여 로그인

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

인증 컨텍스트 저장

Connect-AzAccount cmdlet은 항상 자격 증명을 묻는 메시지를 표시합니다. 다음 cmdlet을 사용하여 메시지가 표시되지 않도록 할 수 있습니다.

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

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

SPI(서비스 주체 ID)를 사용하여 로그인

$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 계정은 작업 메타데이터 및 작업 감사 로그를 저장하는 데 사용됩니다.

기본 데이터 레이크 저장소 계정 찾기

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

데이터 원본 목록을 IsDefault 속성으로 필터링하여 기본 Data Lake Store 계정을 찾을 수 있습니다.

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 cmdlet은 처음 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 cmdlet을 사용하여 작업이 끝날 때까지 기다릴 수 있습니다.

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

작업 파이프라인 및 되풀이 나열

Get-AdlJobPipeline cmdlet을 사용하여 이전에 제출된 작업의 파이프라인 정보를 보기 위해 실행합니다.

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

Get-AdlJobRecurrence cmdlet을 사용하여 이전에 제출된 작업에 대한 되풀이 정보를 확인합니다.

$recurrences = Get-AdlJobRecurrence -Account $adla

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

컴퓨팅 정책 관리

기존 컴퓨팅 정책 나열

Get-AdlAnalyticsComputePolicy cmdlet은 Data Lake Analytics 계정에 대한 컴퓨팅 정책에 대한 정보를 검색합니다.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

컴퓨팅 정책 만들기

New-AdlAnalyticsComputePolicy cmdlet은 Data Lake Analytics 계정에 대한 새 컴퓨팅 정책을 만듭니다. 다음은 지정한 사용자가 사용할 수 있는 최대 AU를 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 플래그를 사용하여 cmdlet을 다시 실행하여 프로세스를 다시 시작할 수 있습니다.

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

Azure IP 주소 허용

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"

구독 ID에서:

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

모든 구독 및 테넌트 ID 나열

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

다음 단계