你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:在 Visual Studio Code 中为 Azure 流分析自定义 .NET 反序列化程序(预览)
重要
Azure 流分析的自定义 .net 反序列化程序将于 2024 年 9 月 30 日停用。 在该日期之后,将无法使用该功能。
Azure 流分析内置了对下述三种数据格式的支持:JSON、CSV 和 Avro,如此文档所示。使用自定义 .NET 反序列化程序,你可以处理其他格式的数据,例如协议缓冲区、绑定以及用户为云作业定义的其他格式。 本教程演示如何使用 Visual Studio Code 为 Azure 流分析作业创建、测试并调试自定义 .NET 反序列化程序。
将了解如何执行以下操作:
- 为协议缓冲区创建自定义反序列化程序。
- 在 Visual Studio Code 中创建 Azure 流分析作业。
- 将流分析作业配置为使用自定义反序列化程序。
- 在本地运行流分析作业以测试和调试自定义反序列化程序。
先决条件
安装 .NET core SDK 并重启 Visual Studio Code。
使用此快速入门了解如何使用 Visual Studio Code 创建流分析作业。
创建自定义反序列化程序
打开终端,运行以下命令,以便在 Visual Studio Code 中为名为“ProtobufDeserializer”的自定义反序列化程序创建 .NET 类库。
dotnet new classlib -o ProtobufDeserializer
转到 ProtobufDeserializer 项目目录,然后安装 Microsoft.Azure.StreamAnalytics 和 Google.Protobuf NuGet 包。
dotnet add package Microsoft.Azure.StreamAnalytics
dotnet add package Google.Protobuf
将 MessageBodyProto 类 和 MessageBodyDeserializer 类添加到项目。
生成 ProtobufDeserializer 项目。
添加 Azure 流分析项目
打开 Visual Studio Code 并选择“Ctrl+Shift+P”,以打开命令面板。 然后输入 ASA 并选择 ASA: Create New Project。 将其命名为“ProtobufCloudDeserializer”。
配置流分析作业
双击“JobConfig.json”。 使用默认配置,但以下设置除外:
设置 建议的值 全局存储设置资源 选择当前帐户中的数据源 全局存储设置订阅 <你的订阅> 全局存储设置存储帐户 <你的存储帐户> CustomCodeStorage 设置存储帐户 <你的存储帐户> CustomCodeStorage 设置容器 <你的存储容器> 在 Inputs 文件夹下,打开 input.json 。 选择“添加实时输入”,然后从 Azure Data Lake Storage Gen2/Blob 存储添加输入,选择“从 Azure 订阅中选择” 。 使用默认配置,但以下设置除外:
设置 建议的值 名称 输入 订阅 <你的订阅> 存储帐户 <你的存储帐户> 容器 <你的存储容器> 序列化类型 选择“自定义” SerializationProjectPath 从 CodeLens 选择“选择库项目路径”,并选择在上一部分创建的 ProtobufDeserializer 库项目 。 选择“生成项目”以生成该项目 SerializationClassName 从 CodeLens 选择“选择反序列化类”,以自动填充类名和 DLL 路径 类名 MessageBodyProto.MessageBodyDeserializer 将以下查询添加到 ProtobufCloudDeserializer.asaql 文件。
SELECT * FROM Input
下载示例 protobuf 输入文件。 在 Inputs 文件夹中右键单击“Input.json”,然后选择“添加本地输入” 。 然后,双击 local_input1.json 并使用默认配置(以下设置除外)。
设置 建议的值 选择本地文件路径 选择 CodeLens,以选择 <已下载的示例 protobuf 输入文件的文件路径>
执行流分析作业
打开 ProtobufCloudDeserializer.asaql,从 CodeLens 选择“在本地运行”,然后从下拉列表中选择“使用本地输入” 。
在“作业”图的“结果”选项卡下,你可以查看输出结果。 还可以单击该作业图中的步骤来查看中间结果。 有关更多详细信息,请参阅使用作业图进行本地调试。
已成功为流分析作业实现自定义反序列化程序! 在本教程中,你使用本地输入数据在本地测试了自定义反序列化程序。 还可以使用云中实时数据输入对其进行测试。 若要在云中运行作业,需要正确配置输入和输出。 然后将作业从 Visual Studio Code 提交到 Azure,以使用实现的自定义反序列化程序在云中运行作业。
调试反序列化程序
可以在本地采用调试标准 .NET 代码的方式调试 .NET 反序列化程序。
在 .NET 函数中添加断点。
从 Visual Studio Code 活动栏中单击“运行”,然后选择“创建 launch.json 文件” 。
选择“ProtobufCloudDeserializer”,然后从下拉列表中选择“Azure 流分析” 。
编辑 launch.json 文件,以将
.asaql 替换为 ProtobufCloudDeserializer.asaql。 按 F5 开始调试。 程序按预期在断点处停止。 此操作适用于本地输入和实时输入数据。
清理资源
若不再需要资源组、流式处理作业以及所有相关资源,请将其删除。 删除作业可避免对作业使用的流单元进行计费。 如果计划在将来使用该作业,可以先停止它,等到以后需要时再重启它。 如果你不打算继续使用此作业,请使用以下步骤删除本教程中创建的所有资源:
在 Azure 门户的左侧菜单中选择“资源组”,然后选择已创建资源的名称。
在资源组页上选择“删除”,在文本框中键入要删除的资源的名称,然后选择“删除”。
后续步骤
在本教程中,你了解了如何为协议缓冲区输入序列化实现自定义 .NET 反序列化程序。 若要了解有关创建自定义反序列化程序的详细信息,请继续阅读以下文章: