如何为 Azure Data Lake Analytics 设置 CI/CD 管道

本文介绍如何为 U-SQL 作业和 U-SQL 数据库设置持续集成和部署(CI/CD)管道。

重要

Azure Data Lake Analytics 于 2024 年 2 月 29 日停用。 通过此公告了解更多

对于数据分析,组织可以使用 Azure Synapse AnalyticsMicrosoft Fabric

注释

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

将 CI/CD 用于 U-SQL 作业

适用于 Visual Studio 的 Azure Data Lake 工具提供了有助于组织 U-SQL 脚本的 U-SQL 项目类型。 使用 U-SQL 项目管理 U-SQL 代码可以简化更多的 CI/CD 方案。

生成 U-SQL 项目

可以通过传递相应的参数,使用Microsoft生成引擎(MSBuild)生成 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:在用于 Visual Studio 的 Azure Data Lake 工具中打开旧项目。 使用低于 2.3.3000.0 的版本。 旧项目模板将自动升级到最新版本。 使用版本低于 2.3.3000.0 的新项目使用新模板。

获取 NuGet

MSBuild 不提供对 U-SQL 项目的内置支持。 要获得此支持,您需要为解决方案添加一个引用,指向添加所需语言服务的 NuGet 包 Microsoft.Azure.DataLake.USQL.SDK

若要添加 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 包>\build\runtime。 此参数指 U-SQL 语言服务的 NuGet 包的安装路径。

  • USQLTargetType=Merge 或 SyntaxCheck

    • 合并。 合并模式编译后置代码文件。 示例包括 .cs.py.r 文件。 它将生成的用户定义的代码库内联到 U-SQL 脚本中。 示例包括 dll 二进制文件、Python 或 R 代码。

    • SyntaxCheck。 SyntaxCheck 模式首先将后台代码文件合并到 U-SQL 脚本中。 然后,它会编译 U-SQL 脚本来验证代码。

  • DataRoot=<DataRoot 路径>。 只有 SyntaxCheck 模式才需要 DataRoot。 使用 SyntaxCheck 模式生成脚本时,MSBuild 会检查对脚本中数据库对象的引用。 在生成之前,在生成计算机的 DataRoot 文件夹中设置一个匹配的本地环境,其中包含来自 U-SQL 数据库的引用对象。 还可以通过 引用 U-SQL 数据库项目来管理这些数据库依赖项。 MSBuild 仅检查数据库对象引用,而不是文件。

  • EnableDeployment=truefalse。 EnableDeployment 指示是否允许在生成过程中部署引用的 U-SQL 数据库。 如果引用 U-SQL 数据库项目并使用 U-SQL 脚本中的数据库对象,请将此参数设置为 true

通过 Azure Pipelines 持续集成

除了命令行,还可以使用 Visual Studio 生成或 MSBuild 任务在 Azure Pipelines 中生成 U-SQL 项目。 若要设置生成管道,请确保在生成管道中添加两个任务:NuGet 还原任务和 MSBuild 任务。

U-SQL 项目 的 MSBuild 任务

  1. 添加一个 NuGet 还原任务,以获取包含 Azure.DataLake.USQL.SDK的 NuGet 包,该包由解决方案引用,从而使 MSBuild 可以找到 U-SQL 语言目标。 如果要直接在步骤 2 中使用 MSBuild 参数示例,请将 高级>目标目录 设置为 $(Build.SourcesDirectory)/packages

    U-SQL 项目的 NuGet 还原任务

  2. 在 Visual Studio 生成工具或 MSBuild 任务中设置 MSBuild 参数,如以下示例所示。 或者,可以在 Azure Pipelines 生成管道中为这些参数定义变量。

    为 U-SQL 项目定义 CI/CD MSBuild 变量

    /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 项目中的所有脚本会被构建并输出到一个名为 USQLProjectName.usqlpack的 zip 文件中。 项目中的文件夹结构保留在压缩的生成输出中。

注释

每个 U-SQL 脚本的代码文件将作为内联语句合并到脚本生成的输出中。

测试 U-SQL 脚本

Azure Data Lake 为 U-SQL 脚本和 C# UDO/UDAG/UDF 提供测试项目:

部署 U-SQL 作业

通过生成和测试过程验证代码后,可以通过 Azure PowerShell 任务直接从 Azure Pipelines 提交 U-SQL 作业。 还可以将脚本部署到 Azure Data Lake Store 或 Azure Blob 存储,并 通过 Azure 数据工厂运行计划作业。

通过 Azure Pipelines 提交 U-SQL 作业

U-SQL 项目的生成输出是一个名为 USQLProjectName.usqlpack的 zip 文件。 zip 文件包括项目中的所有 U-SQL 脚本。 可以在 Pipelines 中将 Azure PowerShell 任务 与以下示例 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-AzDataLakeAnalyticsJobWait-AzDataLakeAnalyticsJob 都是 Azure 资源管理器框架中 Azure Data Lake Analytics 的 Azure PowerShell cmdlet。 你需要一个安装了 Azure PowerShell 的工作站。 有关更多命令和示例,可以参考 命令列表

通过 Azure 数据工厂部署 U-SQL 作业

可以直接从 Azure Pipelines 提交 U-SQL 作业。 或者,可以将生成的脚本上传到 Azure Data Lake Store 或 Azure Blob 存储,通过 Azure 数据工厂运行计划作业。

将 Azure Pipelines 中的 Azure PowerShell 任务 与以下示例 PowerShell 脚本配合使用,将 U-SQL 脚本上传到 Azure Data Lake Store 帐户:

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

用于 Visual Studio 的 Azure Data Lake 工具提供 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 生成或 MSBuild 任务在 Azure Pipelines 中生成 U-SQL 数据库项目。 若要设置生成任务,请确保在生成管道中添加两个任务:NuGet 还原任务和 MSBuild 任务。

的 CI/CD MSBuild 任务用于 U-SQL 项目

  1. 添加 NuGet 还原任务以获取解决方案引用的 NuGet 包(包括 Azure.DataLake.USQL.SDK),以便 MSBuild 可以找到 U-SQL 语言目标。 如果要直接在步骤 2 中使用 MSBuild 参数示例,请将 高级>目标目录 设置为 $(Build.SourcesDirectory)/packages

    为 U-SQL 项目的 CI/CD NuGet 任务

  2. 在 Visual Studio 生成工具或 MSBuild 任务中设置 MSBuild 参数,如以下示例所示。 或者,可以在 Azure Pipelines 生成管道中为这些参数定义变量。

    为 U-SQL 数据库项目定义 CI/CD MSBuild 变量

    /p:USQLSDKPath=$(Build.SourcesDirectory)/packages/Microsoft.Azure.DataLake.USQL.SDK.1.3.180615/build/runtime
    

U-SQL 数据库项目生成输出

U-SQL 数据库项目的生成输出是一个 U-SQL 数据库部署包,其后缀为 .usqldbpack.usqldbpack 包是一个 zip 文件,其中包含 DDL 文件夹中单个 U-SQL 脚本中的所有 DDL 语句。 它包括用于临时文件夹中程序集的所有 .dlls 和其他文件。

测试表值函数和存储过程

目前不支持直接为表值函数和存储过程添加测试用例。 解决方法是,可以创建一个 U-SQL 项目,该项目具有 U-SQL 脚本来调用这些函数并为其编写测试用例。 执行以下步骤,为 U-SQL 数据库项目中定义的表值函数和存储过程设置测试用例:

  1. 创建用于测试目的的 U-SQL 项目,并编写调用表值函数和存储过程的 U-SQL 脚本。

  2. 添加对 U-SQL 项目的数据库引用。 若要获取表值函数和存储过程定义,需要引用包含 DDL 语句的数据库项目。 详细了解 数据库引用

  3. 为调用表值函数和存储过程的 U-SQL 脚本添加测试用例。 了解如何 为 U-SQL 脚本添加测试用例。

通过 Azure Pipelines 部署 U-SQL 数据库

PackageDeploymentTool.exe 提供了帮助部署 U-SQL 数据库部署包的编程和命令行接口,.usqldbpack。 SDK 包含在位于 生成/运行时/PackageDeploymentTool.exeU-SQL SDK NuGet 包中。 通过使用 PackageDeploymentTool.exe,可以将 U-SQL 数据库部署到 Azure Data Lake Analytics 和本地帐户。

注释

PowerShell 命令行对 U-SQL 数据库部署的支持以及 Azure Pipelines 发布任务支持目前仍在等待中。

执行以下步骤在 Azure Pipelines 中设置数据库部署任务:

  1. 在生成或发布管道中添加 PowerShell 脚本任务,并执行以下 PowerShell 脚本。 此任务有助于获取用于 PackageDeploymentTool.exePackageDeploymentTool.exe的 Azure SDK 依赖项。 可以设置 -AzureSDK-DBDeploymentTool 参数,将依赖项和部署工具加载到特定文件夹。 将 -AzureSDK 路径作为步骤 2 中的 PackageDeploymentTool.exe 参数传递给

    <#
       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
    
  2. 在生成或发布管道中添加 Command-Line 任务,并通过调用 PackageDeploymentTool.exe填写脚本。 PackageDeploymentTool.exe 位于定义的 $DBDeploymentTool 文件夹下。 示例脚本如下所示:

    • 在本地部署 U-SQL 数据库:

      PackageDeploymentTool.exe deploylocal -Package <package path> -Database <database name> -DataRoot <data root path>
      
    • 使用交互式身份验证模式将 U-SQL 数据库部署到 Azure Data Lake Analytics 帐户:

      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
      
    • 使用 机密 身份验证将 U-SQL 数据库部署到 Azure Data Lake Analytics 帐户:

      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 身份验证将 U-SQL 数据库部署到 Azure Data Lake Analytics 帐户:

      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 用于日志记录的文件的路径。 默认为标准输出(终端)。
LogLevel 日志级别:详细、正常、警告或错误。 LogLevel.普通

本地部署的参数

参数 说明 默认值 必选
DataRoot 本地数据根文件夹的路径。

Azure Data Lake Analytics 部署的参数

参数 说明 默认值 必选
帐户 指定要按帐户名称部署到的 Azure Data Lake Analytics 帐户。
ResourceGroup Azure Data Lake Analytics 帐户的 Azure 资源组名称。
订阅ID Azure Data Lake Analytics 帐户的 Azure 订阅 ID。
租户 租户名称是“Microsoft Entra”域名。 在 Azure 门户的订阅管理页中找到它。
AzureSDKPath 在 Azure SDK 中搜索依赖程序集的路径。
交互 是否使用交互式模式进行身份验证。
ClientId 用于非交互式身份验证所需的 Microsoft Entra 应用程序 ID。 需要进行非交互式身份验证。
秘密 非交互式身份验证的机密或密码。 它只应在受信任的安全环境中使用。 非交互式身份验证是必需的,否则请使用 SecreteFile。
SecretFile 该文件保存用于非交互式身份验证的机密或密码。 请确保仅限当前用户可读。 非交互式身份验证是必需的,否则请使用机密。
CertFile 该文件保存用于非交互式身份验证的 X.509 认证。 默认值是使用客户端机密身份验证。
职位前缀 用于 U-SQL DDL 作业数据库部署的前缀。 Deploy_ + DateTime.Now

后续步骤