你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Synapse适用于 .NET 的 Spark 客户端库 - 版本 1.0.0-preview.8

此目录包含 .NET SDK 的开放源代码子集。 有关完整 Azure SDK 的文档,请参阅 Microsoft Azure .NET 开发人员中心

使用 Synapse 的客户端库可以:

  • 提交 Spark Batch 作业和 Spark 会话作业

Azure Synapse 是一种无限制的分析服务,它将企业数据仓库和大数据分析结合在一起。 借助它可以使用无服务器的按需资源或预配资源,任意执行自己定义的大规模数据查询。 Azure Synapse 将这两个领域结合在一起,以统一的体验引入、准备、管理和提供数据,以满足即时 BI 和机器学习的需求。

入门

可以从 Microsoft Azure 下载页面下载完整的 Microsoft Azure SDK,并附带对生成部署包、与工具集成、丰富的命令行工具等的支持。

为了获得最佳开发体验,开发人员应将官方的 Microsoft NuGet 包用于库。 NuGet 包定期更新新功能和修补程序。

安装包

使用 NuGet 安装适用于 Azure Synapse Analytics for .NET 的 Spark 客户端库:

dotnet add package Azure.Analytics.Synapse.Spark --version 0.1.0-preview.1

先决条件

如果使用 Azure CLI,则命令如下所示:

az synapse workspace create \
    --name <your-workspace-name> \
    --resource-group <your-resource-group-name> \
    --storage-account <your-storage-account-name> \
    --file-system <your-storage-file-system-name> \
    --sql-admin-login-user <your-sql-admin-user-name> \
    --sql-admin-login-password <your-sql-admin-user-password> \
    --location <your-workspace-location>

验证客户端

若要与 Azure Synapse Analytics 服务交互,需要创建 SparkBatchClientSparkSessionClient 类的实例。 需要 工作区终结点(可能在门户中将其视为“开发终结点”)和 客户端机密凭据 (客户端 ID、客户端机密、租户 ID) 来实例化客户端对象。

本入门部分将使用客户端机密凭据身份验证,但可以找到更多使用 Azure 标识进行身份验证的方法。 若要使用如下所示的 DefaultAzureCredential 提供程序或随 Azure SDK 提供的其他凭据提供程序,应安装 Azure.Identity 包:

Install-Package Azure.Identity

示例

Microsoft.Azure.Synapse 支持 spark 批处理作业的 CRUD。

Spark Batch 作业示例

列出 spark 批处理作业

列出特定 synapse 工作区的特定 Spark 池下的 spark 批处理作业

Response<SparkBatchJobCollection> jobs = client.GetSparkBatchJobs();
foreach (SparkBatchJob job in jobs.Value.Sessions)
{
    Console.WriteLine(job.Name);
}

创建 spark 批处理作业

在特定工作区和 Spark 池下创建 spark 批处理作业。

string name = $"batch-{Guid.NewGuid()}";
string file = string.Format("abfss://{0}@{1}.dfs.core.windows.net/samples/net/wordcount/wordcount.zip", fileSystem, storageAccount);
SparkBatchJobOptions request = new SparkBatchJobOptions(name, file)
{
    ClassName = "WordCount",
    Arguments =
    {
        string.Format("abfss://{0}@{1}.dfs.core.windows.net/samples/net/wordcount/shakespeare.txt", fileSystem, storageAccount),
        string.Format("abfss://{0}@{1}.dfs.core.windows.net/samples/net/wordcount/result/", fileSystem, storageAccount),
    },
    DriverMemory = "28g",
    DriverCores = 4,
    ExecutorMemory = "28g",
    ExecutorCores = 4,
    ExecutorCount = 2
};

SparkBatchOperation createOperation = client.StartCreateSparkBatchJob(request);
while (!createOperation.HasCompleted)
{
    System.Threading.Thread.Sleep(2000);
    createOperation.UpdateStatus();
}
SparkBatchJob jobCreated = createOperation.Value;

取消 spark 批处理作业

取消特定工作区和 Spark 池下具有 Spark 批处理 ID 的 Spark 批处理作业。

Response operation = client.CancelSparkBatchJob(jobCreated.Id);

生成

有关生成Azure Synapse客户端库的信息,请参阅生成用于 .NET 的 Microsoft Azure SDK

目标框架

有关Azure Synapse客户端库的目标框架的信息,请参阅用于 .NET 的 Microsoft Azure SDK的目标框架

关键概念

提交 Spark 作业。

线程安全

我们保证所有客户端实例方法都是线程安全的,并且相互独立, (准则) 。 这可确保重用客户端实例的建议始终是安全的,即使跨线程也是如此。

其他概念

客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | 嘲笑 | 客户端生存期

故障排除

请在 github 中打开问题。

后续步骤

下一步是添加更多示例

供稿

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。