이 문서에서는 U-SQL 작업 및 U-SQL 데이터베이스에 대한 CI/CD(연속 통합 및 배포) 파이프라인을 설정하는 방법을 알아봅니다.
중요합니다
Azure Data Lake Analytics는 2024년 2월 29일에 사용 중지되었습니다. 에 대해 더 알고 싶다면 이 공지을 확인하세요.
데이터 분석을 위해 조직은 Azure Synapse Analytics 또는 Microsoft Fabric을 사용할 수 있습니다.
비고
Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.
U-SQL 작업에 CI/CD 사용
Visual Studio용 Azure Data Lake Tools는 U-SQL 스크립트를 구성하는 데 도움이 되는 U-SQL 프로젝트 형식을 제공합니다. U-SQL 프로젝트를 사용하여 U-SQL 코드를 관리하면 추가 CI/CD 시나리오를 쉽게 관리할 수 있습니다.
U-SQL 프로젝트 빌드
해당 매개 변수를 전달하여 MSBuild(Microsoft Build Engine)를 사용하여 U-SQL 프로젝트를 빌드할 수 있습니다. 이 문서의 단계에 따라 U-SQL 프로젝트에 대한 빌드 프로세스를 설정합니다.
프로젝트 마이그레이션
U-SQL 프로젝트에 대한 빌드 작업을 설정하기 전에 최신 버전의 U-SQL 프로젝트가 있는지 확인합니다. 편집기에서 U-SQL 프로젝트 파일을 열고 다음과 같은 가져오기 항목이 있는지 확인합니다.
<!-- check for SDK Build target in current path then in USQLSDKPath-->
<Import Project="UsqlSDKBuild.targets" Condition="Exists('UsqlSDKBuild.targets')" />
<Import Project="$(USQLSDKPath)\UsqlSDKBuild.targets" Condition="!Exists('UsqlSDKBuild.targets') And '$(USQLSDKPath)' != '' And Exists('$(USQLSDKPath)\UsqlSDKBuild.targets')" />
그렇지 않은 경우 프로젝트를 마이그레이션하는 두 가지 옵션이 있습니다.
- 옵션 1: 이전 가져오기 항목을 이전 항목으로 변경합니다.
- 옵션 2: Azure Data Lake Tools for Visual Studio에서 이전 프로젝트를 엽니다. 2.3.3000.0보다 최신 버전을 사용합니다. 이전 프로젝트 템플릿은 자동으로 최신 버전으로 업그레이드됩니다. 2.3.3000.0보다 최신 버전으로 만든 새 프로젝트는 새 템플릿을 사용합니다.
NuGet 가져오기
MSBuild는 U-SQL 프로젝트에 대한 기본 제공 지원을 제공하지 않습니다. 이 지원을 받으려면 필요한 언어 서비스를 추가하는 Microsoft.Azure.DataLake.USQL.SDK NuGet 패키지에 솔루션에 대한 참조를 추가해야 합니다.
NuGet 패키지 참조를 추가하려면 Visual Studio 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리를 선택합니다. 또는 솔루션 폴더에 호출 packages.config
된 파일을 추가하고 다음 내용을 여기에 넣을 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.DataLake.USQL.SDK" version="1.3.180620" targetFramework="net452" />
</packages>
U-SQL 데이터베이스 참조 관리
U-SQL 프로젝트의 U-SQL 스크립트에는 U-SQL 데이터베이스 개체에 대한 쿼리 문이 있을 수 있습니다. 이 경우 U-SQL 프로젝트를 빌드하기 전에 개체의 정의를 포함하는 해당 U-SQL 데이터베이스 프로젝트를 참조해야 합니다. 예를 들어 U-SQL 테이블을 쿼리하거나 어셈블리를 참조하는 경우가 있습니다.
U-SQL 데이터베이스 프로젝트에 대해 자세히 알아봅니다.
비고
DROP 문이 실수로 데이터를 삭제할 수 있습니다. DROP 문을 사용하도록 설정하려면 MSBuild 인수를 명시적으로 지정해야 합니다. AllowDropStatement 는 드롭 어셈블리 및 테이블 반환 함수 드롭과 같은 데이터 관련 DROP이 아닌 작업을 사용하도록 설정합니다. AllowDataDropStatement 는 테이블 삭제 및 스키마 삭제와 같은 데이터 관련 DROP 작업을 사용하도록 설정합니다. AllowDataDropStatement를 사용하기 전에 AllowDropStatement를 사용하도록 설정해야 합니다.
MSBuild 명령줄을 사용하여 U-SQL 프로젝트 빌드
먼저 프로젝트를 마이그레이션하고 NuGet 패키지를 가져옵니다. 그런 다음, 다음 인수를 사용하여 표준 MSBuild 명령줄을 호출하여 U-SQL 프로젝트를 빌드합니다.
msbuild USQLBuild.usqlproj /p:USQLSDKPath=packages\Microsoft.Azure.DataLake.USQL.SDK.1.3.180615\build\runtime;USQLTargetType=SyntaxCheck;DataRoot=datarootfolder;/p:EnableDeployment=true
인수 정의 및 값은 다음과 같습니다.
USQLSDKPath=<U-SQL Nuget package>\build\runtime. 이 매개 변수는 U-SQL 언어 서비스에 대한 NuGet 패키지의 설치 경로를 나타냅니다.
USQLTargetType=Merge 또는 SyntaxCheck:
병합합니다. 병합 모드는 코드-비하인드 파일을 컴파일합니다. 예제는 .cs, .py 및 .r 파일입니다. 결과 사용자 정의 코드 라이브러리를 U-SQL 스크립트에 인라인합니다. 예를 들면 DLL 바이너리, Python 코드 또는 R 코드가 있을 수 있습니다.
SyntaxCheck. SyntaxCheck 모드는 먼저 코드 숨김 파일을 U-SQL 스크립트에 병합합니다. 그런 다음 U-SQL 스크립트를 컴파일하여 코드의 유효성을 검사합니다.
DataRoot=<DataRoot 경로>입니다. DataRoot는 SyntaxCheck 모드에만 필요합니다. SyntaxCheck 모드를 사용하여 스크립트를 빌드하는 경우 MSBuild는 스크립트의 데이터베이스 개체에 대한 참조를 확인합니다. 빌드하기 전에 빌드 컴퓨터의 DataRoot 폴더에 있는 U-SQL 데이터베이스에서 참조된 개체를 포함하는 일치하는 로컬 환경을 설정합니다. U-SQL 데이터베이스 프로젝트를 참조하여 이러한 데이터베이스 종속성을 관리할 수도 있습니다. MSBuild는 파일이 아닌 데이터베이스 개체 참조만 확인합니다.
EnableDeployment=true 또는 false입니다. EnableDeployment는 빌드 프로세스 중에 참조된 U-SQL 데이터베이스를 배포할 수 있는지를 나타냅니다. U-SQL 데이터베이스 프로젝트를 참조하고 U-SQL 스크립트에서 데이터베이스 개체를 사용하는 경우 이 매개 변수를 true로 설정합니다.
Azure Pipelines를 통한 연속 통합
명령줄 외에도 Visual Studio 빌드 또는 MSBuild 작업을 사용하여 Azure Pipelines에서 U-SQL 프로젝트를 빌드할 수도 있습니다. 빌드 파이프라인을 설정하려면 빌드 파이프라인에 NuGet 복원 작업과 MSBuild 태스크라는 두 가지 작업을 추가해야 합니다.
MSBuild가 U-SQL 언어 대상을 찾을 수 있도록 NuGet 복원 작업을 추가하여 포함된
Azure.DataLake.USQL.SDK
솔루션 참조 NuGet 패키지를 가져옵니다. 2단계에서 MSBuild 인수 샘플을 직접 사용하려는 경우 고급>대상 디렉터리를$(Build.SourcesDirectory)/packages
설정합니다.다음 예제와 같이 Visual Studio 빌드 도구 또는 MSBuild 작업에서 MSBuild 인수를 설정합니다. 또는 Azure Pipelines 빌드 파이프라인에서 이러한 인수에 대한 변수를 정의할 수 있습니다.
/p:USQLSDKPath=$(Build.SourcesDirectory)/packages/Microsoft.Azure.DataLake.USQL.SDK.1.3.180615/build/runtime /p:USQLTargetType=SyntaxCheck /p:DataRoot=$(Build.SourcesDirectory) /p:EnableDeployment=true
U-SQL 프로젝트 빌드 출력
빌드를 실행하면 U-SQL 프로젝트의 모든 스크립트가 빌드되고 zip 파일인 에 USQLProjectName.usqlpack
출력됩니다. 프로젝트의 폴더 구조는 압축된 빌드 출력에 유지됩니다.
비고
각 U-SQL 스크립트에 대한 코드 비하인드 파일은 스크립트 빌드 출력에 인라인 구문으로 병합됩니다.
U-SQL 스크립트 테스트
Azure Data Lake는 U-SQL 스크립트 및 C# UDO/UDAG/UDF에 대한 테스트 프로젝트를 제공합니다.
U-SQL 스크립트 및 확장 C# 코드에 대한 테스트 사례를 추가하는 방법을 알아봅니다.
Azure Pipelines에서 테스트 사례를 실행하는 방법을 알아봅니다.
U-SQL 작업 배포
빌드 및 테스트 프로세스를 통해 코드를 확인한 후 Azure PowerShell 작업을 통해 Azure Pipelines에서 직접 U-SQL 작업을 제출할 수 있습니다. Azure Data Lake Store 또는 Azure Blob Storage에 스크립트를 배포하고 Azure Data Factory를 통해 예약된 작업을 실행할 수도 있습니다.
Azure Pipelines를 통해 U-SQL 작업 제출
U-SQL 프로젝트의 빌드 출력은 USQLProjectName.usqlpack이라는 zip 파일입니다. zip 파일에는 프로젝트의 모든 U-SQL 스크립트가 포함됩니다. 다음 샘플 PowerShell 스크립트와 함께 Pipelines의 Azure PowerShell 작업을 사용하여 Azure Pipelines에서 직접 U-SQL 작업을 제출할 수 있습니다.
<#
This script can be used to submit U-SQL Jobs with given U-SQL project build output(.usqlpack file).
This will unzip the U-SQL project build output, and submit all scripts one-by-one.
Note: the code behind file for each U-SQL script will be merged into the built U-SQL script in build output.
Example :
USQLJobSubmission.ps1 -ADLAAccountName "myadlaaccount" -ArtifactsRoot "C:\USQLProject\bin\debug\" -DegreeOfParallelism 2
#>
param(
[Parameter(Mandatory=$true)][string]$ADLAAccountName, # ADLA account name to submit U-SQL jobs
[Parameter(Mandatory=$true)][string]$ArtifactsRoot, # Root folder of U-SQL project build output
[Parameter(Mandatory=$false)][string]$DegreeOfParallelism = 1
)
function Unzip($USQLPackfile, $UnzipOutput)
{
$USQLPackfileZip = Rename-Item -Path $USQLPackfile -NewName $([System.IO.Path]::ChangeExtension($USQLPackfile, ".zip")) -Force -PassThru
Expand-Archive -Path $USQLPackfileZip -DestinationPath $UnzipOutput -Force
Rename-Item -Path $USQLPackfileZip -NewName $([System.IO.Path]::ChangeExtension($USQLPackfileZip, ".usqlpack")) -Force
}
## Get U-SQL scripts in U-SQL project build output(.usqlpack file)
Function GetUsqlFiles()
{
$USQLPackfiles = Get-ChildItem -Path $ArtifactsRoot -Include *.usqlpack -File -Recurse -ErrorAction SilentlyContinue
$UnzipOutput = Join-Path $ArtifactsRoot -ChildPath "UnzipUSQLScripts"
foreach ($USQLPackfile in $USQLPackfiles)
{
Unzip $USQLPackfile $UnzipOutput
}
$USQLFiles = Get-ChildItem -Path $UnzipOutput -Include *.usql -File -Recurse -ErrorAction SilentlyContinue
return $USQLFiles
}
## Submit U-SQL scripts to ADLA account one-by-one
Function SubmitAnalyticsJob()
{
$usqlFiles = GetUsqlFiles
Write-Output "$($usqlFiles.Count) jobs to be submitted..."
# Submit each usql script and wait for completion before moving ahead.
foreach ($usqlFile in $usqlFiles)
{
$scriptName = "[Release].[$([System.IO.Path]::GetFileNameWithoutExtension($usqlFile.fullname))]"
Write-Output "Submitting job for '{$usqlFile}'"
$jobToSubmit = Submit-AzDataLakeAnalyticsJob -Account $ADLAAccountName -Name $scriptName -ScriptPath $usqlFile -DegreeOfParallelism $DegreeOfParallelism
LogJobInformation $jobToSubmit
Write-Output "Waiting for job to complete. Job ID:'{$($jobToSubmit.JobId)}', Name: '$($jobToSubmit.Name)' "
$jobResult = Wait-AzDataLakeAnalyticsJob -Account $ADLAAccountName -JobId $jobToSubmit.JobId
LogJobInformation $jobResult
}
}
Function LogJobInformation($jobInfo)
{
Write-Output "************************************************************************"
Write-Output ([string]::Format("Job Id: {0}", $(DefaultIfNull $jobInfo.JobId)))
Write-Output ([string]::Format("Job Name: {0}", $(DefaultIfNull $jobInfo.Name)))
Write-Output ([string]::Format("Job State: {0}", $(DefaultIfNull $jobInfo.State)))
Write-Output ([string]::Format("Job Started at: {0}", $(DefaultIfNull $jobInfo.StartTime)))
Write-Output ([string]::Format("Job Ended at: {0}", $(DefaultIfNull $jobInfo.EndTime)))
Write-Output ([string]::Format("Job Result: {0}", $(DefaultIfNull $jobInfo.Result)))
Write-Output "************************************************************************"
}
Function DefaultIfNull($item)
{
if ($item -ne $null)
{
return $item
}
return ""
}
Function Main()
{
Write-Output ([string]::Format("ADLA account: {0}", $ADLAAccountName))
Write-Output ([string]::Format("Root folde for usqlpack: {0}", $ArtifactsRoot))
Write-Output ([string]::Format("AU count: {0}", $DegreeOfParallelism))
Write-Output "Starting USQL script deployment..."
SubmitAnalyticsJob
Write-Output "Finished deployment..."
}
Main
비고
명령: Submit-AzDataLakeAnalyticsJob
와 Wait-AzDataLakeAnalyticsJob
는 모두 Azure Resource Manager 프레임워크에서 Azure Data Lake Analytics를 위한 Azure PowerShell cmdlet입니다. Azure PowerShell이 설치된 워크스테이션이 필요합니다.
명령 목록을 참조하여 더 많은 명령 및 예제를 참조할 수 있습니다.
Azure Data Factory를 통해 U-SQL 작업 배포
Azure Pipelines에서 직접 U-SQL 작업을 제출할 수 있습니다. 또는 빌드된 스크립트를 Azure Data Lake Store 또는 Azure Blob Storage에 업로드하고 Azure Data Factory를 통해 예약된 작업을 실행할 수 있습니다.
다음 샘플 PowerShell 스크립트와 함께 Azure Pipelines의 Azure PowerShell 작업을 사용하여 Azure Data Lake Store 계정에 U-SQL 스크립트를 업로드합니다.
<#
This script can be used to upload U-SQL files to ADLS with given U-SQL project build output(.usqlpack file).
This will unzip the U-SQL project build output, and upload all scripts to ADLS one-by-one.
Example :
FileUpload.ps1 -ADLSName "myadlsaccount" -ArtifactsRoot "C:\USQLProject\bin\debug\"
#>
param(
[Parameter(Mandatory=$true)][string]$ADLSName, # ADLS account name to upload U-SQL scripts
[Parameter(Mandatory=$true)][string]$ArtifactsRoot, # Root folder of U-SQL project build output
[Parameter(Mandatory=$false)][string]$DestinationFolder = "USQLScriptSource" # Destination folder in ADLS
)
Function UploadResources()
{
Write-Host "************************************************************************"
Write-Host "Uploading files to $ADLSName"
Write-Host "***********************************************************************"
$usqlScripts = GetUsqlFiles
$files = @(get-childitem $usqlScripts -recurse)
foreach($file in $files)
{
Write-Host "Uploading file: $($file.Name)"
Import-AzDataLakeStoreItem -AccountName $ADLSName -Path $file.FullName -Destination "/$(Join-Path $DestinationFolder $file)" -Force
}
}
function Unzip($USQLPackfile, $UnzipOutput)
{
$USQLPackfileZip = Rename-Item -Path $USQLPackfile -NewName $([System.IO.Path]::ChangeExtension($USQLPackfile, ".zip")) -Force -PassThru
Expand-Archive -Path $USQLPackfileZip -DestinationPath $UnzipOutput -Force
Rename-Item -Path $USQLPackfileZip -NewName $([System.IO.Path]::ChangeExtension($USQLPackfileZip, ".usqlpack")) -Force
}
Function GetUsqlFiles()
{
$USQLPackfiles = Get-ChildItem -Path $ArtifactsRoot -Include *.usqlpack -File -Recurse -ErrorAction SilentlyContinue
$UnzipOutput = Join-Path $ArtifactsRoot -ChildPath "UnzipUSQLScripts"
foreach ($USQLPackfile in $USQLPackfiles)
{
Unzip $USQLPackfile $UnzipOutput
}
return Get-ChildItem -Path $UnzipOutput -Include *.usql -File -Recurse -ErrorAction SilentlyContinue
}
UploadResources
U-SQL 데이터베이스에 대한 CI/CD
Azure Data Lake Tools for Visual Studio는 U-SQL 데이터베이스를 개발, 관리 및 배포하는 데 도움이 되는 U-SQL 데이터베이스 프로젝트 템플릿을 제공합니다. U-SQL 데이터베이스 프로젝트에 대해 자세히 알아봅니다.
U-SQL 데이터베이스 프로젝트 빌드
NuGet 패키지 가져오기
MSBuild는 U-SQL 데이터베이스 프로젝트에 대한 기본 제공 지원을 제공하지 않습니다. 이 기능을 얻으려면 필요한 언어 서비스를 추가하는 Microsoft.Azure.DataLake.USQL.SDK NuGet 패키지에 솔루션에 대한 참조를 추가해야 합니다.
NuGet 패키지 참조를 추가하려면 Visual Studio 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭합니다. NuGet 패키지 관리선택합니다. 그런 다음 NuGet 패키지를 검색하여 설치합니다. 또는 솔루션 폴더에 packages.config 파일을 추가하고 다음 내용을 여기에 넣을 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.DataLake.USQL.SDK" version="1.3.180615" targetFramework="net452" />
</packages>
MSBuild 명령줄을 사용하여 데이터베이스 프로젝트 U-SQL 빌드
U-SQL 데이터베이스 프로젝트를 빌드하려면 표준 MSBuild 명령줄을 호출하고 U-SQL SDK NuGet 패키지 참조를 다른 인수로 전달합니다. 다음 예제를 참조하세요.
msbuild DatabaseProject.usqldbproj /p:USQLSDKPath=packages\Microsoft.Azure.DataLake.USQL.SDK.1.3.180615\build\runtime
인수 USQLSDKPath=<U-SQL Nuget package>\build\runtime
는 U-SQL 언어 서비스에 대한 NuGet 패키지의 설치 경로를 나타냅니다.
Azure Pipelines와 연속 통합
명령줄 외에도 Visual Studio Build 또는 MSBuild 작업을 사용하여 Azure Pipelines에서 U-SQL 데이터베이스 프로젝트를 빌드할 수 있습니다. 빌드 작업을 설정하려면 빌드 파이프라인에 NuGet 복원 작업과 MSBuild 태스크라는 두 개의 작업을 추가해야 합니다.
MSBuild가 U-SQL 언어 대상을 찾을 수 있도록 NuGet 복원 작업을 추가하여 솔루션 참조 NuGet 패키지를
Azure.DataLake.USQL.SDK
가져옵니다. 2단계에서 MSBuild 인수 샘플을 직접 사용하려는 경우 고급>대상 디렉터리를$(Build.SourcesDirectory)/packages
설정합니다.다음 예제와 같이 Visual Studio 빌드 도구 또는 MSBuild 작업에서 MSBuild 인수를 설정합니다. 또는 Azure Pipelines 빌드 파이프라인에서 이러한 인수에 대한 변수를 정의할 수 있습니다.
/p:USQLSDKPath=$(Build.SourcesDirectory)/packages/Microsoft.Azure.DataLake.USQL.SDK.1.3.180615/build/runtime
U-SQL 데이터베이스 프로젝트 빌드 출력
U-SQL 데이터베이스 프로젝트의 빌드 출력은 접미사 .usqldbpack
이름이 지정된 U-SQL 데이터베이스 배포 패키지입니다. 패키지는 .usqldbpack
DDL 폴더의 단일 U-SQL 스크립트에 있는 모든 DDL 문을 포함하는 zip 파일입니다. 임시 폴더의 어셈블리에 대한 모든 .dll 및 기타 파일이 포함됩니다.
테이블 반환 함수 및 저장 프로시저 테스트
테이블 반환 함수 및 저장 프로시저에 대한 테스트 사례를 직접 추가하는 것은 현재 지원되지 않습니다. 해결 방법으로 해당 함수를 호출하고 테스트 사례를 작성하는 U-SQL 스크립트가 있는 U-SQL 프로젝트를 만들 수 있습니다. U-SQL 데이터베이스 프로젝트에 정의된 테이블 반환 함수 및 저장 프로시저에 대한 테스트 사례를 설정하려면 다음 단계를 수행합니다.
테스트를 위해 U-SQL 프로젝트를 만들고 테이블 반환 함수 및 저장 프로시저를 호출하는 U-SQL 스크립트를 작성합니다.
U-SQL 프로젝트에 데이터베이스 참조를 추가합니다. 테이블 반환 함수 및 저장 프로시저 정의를 얻으려면 DDL 문이 포함된 데이터베이스 프로젝트를 참조해야 합니다. 데이터베이스 참조에 대해 자세히 알아봅니다.
테이블 반환 함수 및 저장 프로시저를 호출하는 U-SQL 스크립트에 대한 테스트 사례를 추가합니다. U-SQL 스크립트에 대한 테스트 사례를 추가하는 방법을 알아봅니다.
Azure Pipelines를 통해 U-SQL 데이터베이스 배포
PackageDeploymentTool.exe
는 U-SQL 데이터베이스 배포 패키지 .usqldbpack을 배포하는 데 도움이 되는 프로그래밍 및 명령줄 인터페이스를 제공합니다. SDK는 빌드/런타임/PackageDeploymentTool.exe있는 U-SQL SDK NuGet 패키지에 포함되어 있습니다. 이를 사용하여 PackageDeploymentTool.exe
Azure Data Lake Analytics 및 로컬 계정에 U-SQL 데이터베이스를 배포할 수 있습니다.
비고
U-SQL 데이터베이스 배포에 대한 PowerShell 명령줄 지원 및 Azure Pipelines 릴리스 작업 지원은 현재 보류 중입니다.
Azure Pipelines에서 데이터베이스 배포 작업을 설정하려면 다음 단계를 수행합니다.
빌드 또는 릴리스 파이프라인에 PowerShell 스크립트 작업을 추가하고 다음 PowerShell 스크립트를 실행합니다. 이 작업은 Azure SDK 종속성을
PackageDeploymentTool.exe
가져오는 데 도움이 됩니다PackageDeploymentTool.exe
. -AzureSDK 및 -DBDeploymentTool 매개 변수를 설정하여 종속성 및 배포 도구를 특정 폴더로 로드할 수 있습니다. -AzureSDK 경로를PackageDeploymentTool.exe
2단계에서 -AzureSDKPath 매개 변수로 전달합니다.<# This script is used for getting dependencies and SDKs for U-SQL database deployment. PowerShell command line support for deploying U-SQL database package(.usqldbpack file) will come soon. Example : GetUSQLDBDeploymentSDK.ps1 -AzureSDK "AzureSDKFolderPath" -DBDeploymentTool "DBDeploymentToolFolderPath" #> param ( [string]$AzureSDK = "AzureSDK", # Folder to cache Azure SDK dependencies [string]$DBDeploymentTool = "DBDeploymentTool", # Folder to cache U-SQL database deployment tool [string]$workingfolder = "" # Folder to execute these command lines ) if ([string]::IsNullOrEmpty($workingfolder)) { $scriptpath = $MyInvocation.MyCommand.Path $workingfolder = Split-Path $scriptpath } cd $workingfolder echo "workingfolder=$workingfolder, outputfolder=$outputfolder" echo "Downloading required packages..." iwr https://www.nuget.org/api/v2/package/Microsoft.Azure.Management.DataLake.Analytics/3.5.1-preview -outf Microsoft.Azure.Management.DataLake.Analytics.3.5.1-preview.zip iwr https://www.nuget.org/api/v2/package/Microsoft.Azure.Management.DataLake.Store/2.4.1-preview -outf Microsoft.Azure.Management.DataLake.Store.2.4.1-preview.zip iwr https://www.nuget.org/api/v2/package/Microsoft.IdentityModel.Clients.ActiveDirectory/2.28.3 -outf Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3.zip iwr https://www.nuget.org/api/v2/package/Microsoft.Rest.ClientRuntime/2.3.11 -outf Microsoft.Rest.ClientRuntime.2.3.11.zip iwr https://www.nuget.org/api/v2/package/Microsoft.Rest.ClientRuntime.Azure/3.3.7 -outf Microsoft.Rest.ClientRuntime.Azure.3.3.7.zip iwr https://www.nuget.org/api/v2/package/Microsoft.Rest.ClientRuntime.Azure.Authentication/2.3.3 -outf Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.3.zip iwr https://www.nuget.org/api/v2/package/Newtonsoft.Json/6.0.8 -outf Newtonsoft.Json.6.0.8.zip iwr https://www.nuget.org/api/v2/package/Microsoft.Azure.DataLake.USQL.SDK/ -outf USQLSDK.zip echo "Extracting packages..." Expand-Archive Microsoft.Azure.Management.DataLake.Analytics.3.5.1-preview.zip -DestinationPath Microsoft.Azure.Management.DataLake.Analytics.3.5.1-preview -Force Expand-Archive Microsoft.Azure.Management.DataLake.Store.2.4.1-preview.zip -DestinationPath Microsoft.Azure.Management.DataLake.Store.2.4.1-preview -Force Expand-Archive Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3.zip -DestinationPath Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3 -Force Expand-Archive Microsoft.Rest.ClientRuntime.2.3.11.zip -DestinationPath Microsoft.Rest.ClientRuntime.2.3.11 -Force Expand-Archive Microsoft.Rest.ClientRuntime.Azure.3.3.7.zip -DestinationPath Microsoft.Rest.ClientRuntime.Azure.3.3.7 -Force Expand-Archive Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.3.zip -DestinationPath Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.3 -Force Expand-Archive Newtonsoft.Json.6.0.8.zip -DestinationPath Newtonsoft.Json.6.0.8 -Force Expand-Archive USQLSDK.zip -DestinationPath USQLSDK -Force echo "Copy required DLLs to output folder..." mkdir $AzureSDK -Force mkdir $DBDeploymentTool -Force copy Microsoft.Azure.Management.DataLake.Analytics.3.5.1-preview\lib\net452\*.dll $AzureSDK copy Microsoft.Azure.Management.DataLake.Store.2.4.1-preview\lib\net452\*.dll $AzureSDK copy Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3\lib\net45\*.dll $AzureSDK copy Microsoft.Rest.ClientRuntime.2.3.11\lib\net452\*.dll $AzureSDK copy Microsoft.Rest.ClientRuntime.Azure.3.3.7\lib\net452\*.dll $AzureSDK copy Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.3\lib\net452\*.dll $AzureSDK copy Newtonsoft.Json.6.0.8\lib\net45\*.dll $AzureSDK copy USQLSDK\build\runtime\*.* $DBDeploymentTool
빌드 또는 릴리스 파이프라인에 Command-Line 작업을 추가하고 호출
PackageDeploymentTool.exe
하여 스크립트를 채웁니다.PackageDeploymentTool.exe
는 정의된 $DBDeploymentTool 폴더 아래에 있습니다. 샘플 스크립트는 다음과 같습니다.U-SQL 데이터베이스를 로컬로 배포합니다.
PackageDeploymentTool.exe deploylocal -Package <package path> -Database <database name> -DataRoot <data root path>
대화형 인증 모드를 사용하여 Azure Data Lake Analytics 계정에 U-SQL 데이터베이스를 배포합니다.
PackageDeploymentTool.exe deploycluster -Package <package path> -Database <database name> -Account <account name> -ResourceGroup <resource group name> -SubscriptionId <subscript id> -Tenant <tenant name> -AzureSDKPath <azure sdk path> -Interactive
비밀 인증을 사용하여 Azure Data Lake Analytics 계정에 U-SQL 데이터베이스를 배포합니다.
PackageDeploymentTool.exe deploycluster -Package <package path> -Database <database name> -Account <account name> -ResourceGroup <resource group name> -SubscriptionId <subscript id> -Tenant <tenant name> -ClientId <client id> -Secrete <secrete>
certFile 인증을 사용하여 Azure Data Lake Analytics 계정에 U-SQL 데이터베이스를 배포합니다.
PackageDeploymentTool.exe deploycluster -Package <package path> -Database <database name> -Account <account name> -ResourceGroup <resource group name> -SubscriptionId <subscript id> -Tenant <tenant name> -ClientId <client id> -Secrete <secrete> -CertFile <certFile>
PackageDeploymentTool.exe 매개 변수 설명
일반 매개 변수
매개 변수 | 설명 | 기본값 | 필수 |
---|---|---|---|
패키지 | 배포할 U-SQL 데이터베이스 배포 패키지의 경로입니다. | 영 | 맞다 |
데이터베이스 | 배포하거나 만들 데이터베이스 이름입니다. | 마스터 | 거짓 |
LogFile | 로깅을 위한 파일의 경로입니다. 기본값은 표준화(콘솔)입니다. | 영 | 거짓 |
로그레벨 | 로그 수준: 상세, 보통, 경고 또는 오류. | 로그 레벨: 기본 | 거짓 |
로컬 배포에 대한 매개 변수
매개 변수 | 설명 | 기본값 | 필수 |
---|---|---|---|
DataRoot | 로컬 데이터 루트 폴더의 경로입니다. | 널 | 맞다 |
Azure Data Lake Analytics 배포에 대한 매개 변수
매개 변수 | 설명 | 기본값 | 필수 |
---|---|---|---|
어카운트 | 계정 이름으로 배포할 Azure Data Lake Analytics 계정을 지정합니다. | 널 | 맞다 |
ResourceGroup | Azure Data Lake Analytics 계정의 Azure 리소스 그룹 이름입니다. | 널(null) | 맞다 |
구독ID | Azure Data Lake Analytics 계정에 대한 Azure 구독 ID입니다. | 널 | 맞다 |
임차인 | 테넌트 이름은 Microsoft Entra 도메인 이름입니다. Azure Portal의 구독 관리 페이지에서 찾습니다. | 널 | 맞다 |
AzureSDKPath | Azure SDK에서 종속 어셈블리를 검색하는 경로입니다. | 널 | 맞다 |
대화형 | 인증에 대화형 모드를 사용할지 여부입니다. | 거짓 | 거짓 |
ClientId | 비대화형 인증에 필요한 Microsoft Entra 애플리케이션 ID입니다. | 널 | 비대화형 인증에 필요합니다. |
비밀 | 비대화식 인증에 사용되는 비밀번호 또는 암호입니다. 신뢰할 수 있고 안전한 환경에서만 사용해야 합니다. | 널 | 비대화형 인증에 필요하고 그렇지 않으면 SecretFile을 사용합니다. |
SecretFile | 이 파일은 비대화형 인증을 위해 비밀 또는 암호를 저장합니다. 현재 사용자만 읽을 수 있도록 해야 합니다. | 널 | 비대화형 인증이 필요하거나 그렇지 않으면 Secret을 사용하십시오. |
인증서 파일 | 이 파일은 비대화형 인증에 대한 X.509 인증을 저장합니다. 기본값은 클라이언트 비밀 인증을 사용하는 것입니다. | 영 | 거짓 |
작업접두사 | U-SQL DDL 작업의 데이터베이스 배포를 위한 접두사입니다. | Deploy_ + DateTime.Now | 거짓 |