你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Visual Studio 中针对 Azure 流分析的自定义 .NET 反序列化程序(预览版)
重要
Azure 流分析的自定义 .net 反序列化程序将于 2024 年 9 月 30 日停用。 在该日期之后,将无法使用该功能。 请在该日期前转换为 JSON、AVRO 或 CSV 内置反序列化程序。
Azure 流分析内置了对三种数据格式的支持:JSON、CSV 和 Avro。 借助自定义 .NET 反序列化程序,可以从其他格式(如协议缓冲区、绑定以及用于云和边缘作业的其他用户定义的格式)读取数据。
本教程演示如何使用 Visual Studio 为 Azure 流分析云作业创建自定义 .NET 反序列化程序。 若要了解如何在 Visual Studio Code 中创建 .NET 反序列化程序,请参阅在 Visual Studio Code 中创建用于 Azure 流分析作业的 .NET 反序列化程序。
本教程介绍如何执行下列操作:
- 为协议缓冲区创建自定义反序列化程序。
- 在 Visual Studio 中创建 Azure 流分析作业。
- 将流分析作业配置为使用自定义反序列化程序。
- 在本地运行流分析作业以测试和调试自定义反序列化程序。
先决条件
如果还没有 Azure 订阅,可以创建一个免费帐户。
安装 Visual Studio 2019(推荐)或 Visual Studio 2017。 支持 Enterprise (Ultimate/Premium)、Professional 和 Community 版本。 不支持 Express 版本。
安装用于 Visual Studio 的流分析工具或更新到最新版本。
在 Visual Studio 中打开 Cloud Explorer,然后登录到 Azure 订阅。
在 Azure 存储帐户中创建容器。 你创建的容器将用于存储与流分析作业相关的资产。 如果存储帐户已具有现有的容器,则可以使用这些容器。 如果没有,则需要新建容器。
创建自定义反序列化程序
打开 Visual Studio 并选择“文件”>“新建”>“项目”。 搜索“流分析”并选择“Azure 流分析自定义反序列化程序项目(.NET)” 。 为项目指定一个名称,例如 Protobuf 反序列化程序。
在解决方案资源管理器中,右键单击“Protobuf 反序列化程序”项目,并从菜单中选择“管理 NuGet 包” 。 然后安装 Microsoft.Azure.StreamAnalytics 和 Google.Protobuf NuGet 包 。
将 MessageBodyProto 类 和 MessageBodyDeserializer 类添加到项目。
生成“Protobuf 反序列化程序”项目。
添加 Azure 流分析项目
在解决方案资源管理器中,右键单击“Protobuf 反序列化程序”解决方案,然后选择“添加”>“新项目”。 在“Azure 流分析”>“流分析”下,选择“Azure 流分析应用程序”。 将其命名为 ProtobufCloudDeserializer 并选择“确定” 。
右键单击 Azure 流分析项目 ProtobufCloudDeserializer 下的“引用” 。 在“项目”下添加“Protobuf 反序列化程序” 。 该程序将自动填充。
配置流分析作业
双击“JobConfig.json”。 使用默认配置,但以下设置除外:
设置 建议的值 全局存储设置资源 选择当前帐户中的数据源 全局存储设置订阅 <你的订阅> 全局存储设置存储帐户 <你的存储帐户> 自定义代码存储设置资源 选择当前帐户中的数据源 自定义代码存储设置存储帐户 <你的存储帐户> 自定义代码存储设置容器 <你的存储容器> 在“输入”下双击“Input.json” 。 使用默认配置,但以下设置除外:
设置 建议的值 Source Blob 存储 资源 选择当前帐户中的数据源 订阅 <你的订阅> 存储帐户 <你的存储帐户> 容器 <你的存储容器> 事件序列化格式 其他(Protobuf、XML、专有…) 资源 从 ASA 项目引用或 CodeBehind 加载 CSharp 程序集名称 ProtobufDeserializer.dll 类名 MessageBodyProto.MessageBodyDeserializer 事件压缩类型 无 将以下查询添加到 Script.asaql 文件中。
SELECT * FROM Input
下载示例 protobuf 输入文件。 在“输入”文件夹中右键单击“Input.json”,然后选择“添加本地输入” 。 然后双击“local_Input.json”并配置以下设置:
设置 建议的值 输入别名 输入 源类型 数据流 事件序列化格式 其他(Protobuf、XML、专有…) CSharp 程序集名称 ProtobufDeserializer.dll 类名 MessageBodyProto.MessageBodyDeserializer 本地输入文件路径 <已下载的示例 protobuf 输入文件的文件路径>
执行流分析作业
打开“Script.asaql”并选择“在本地运行” 。
观察“流分析本地运行结果”中的结果。
已成功为流分析作业实现自定义反序列化程序! 在本教程中,已在本地测试自定义反序列化程序。 对于实际数据,可以正确配置输入和输出。 然后将作业从 Visual Studio 提交到 Azure,以使用刚刚实现的自定义反序列化程序在云中运行作业。
调试反序列化程序
可以在本地采用调试标准 .NET 代码的方式调试 .NET 反序列化程序。
右键单击“ProtobufCloudDeserializer”项目名称并将其设置为启动项目。
在函数中添加断点。
按 F5 开始调试。 程序按预期在断点处停止。
清理资源
若不再需要资源组、流式处理作业以及所有相关资源,请将其删除。 删除作业可避免对作业使用的流单元进行计费。 如果计划在将来使用该作业,可以先停止它,等到以后需要时再重启它。 如果你不打算继续使用此作业,请使用以下步骤删除本教程中创建的所有资源:
在 Azure 门户的左侧菜单中选择“资源组”,然后选择已创建资源的名称。
在资源组页上选择“删除”,在文本框中键入要删除的资源的名称,然后选择“删除”。
后续步骤
在本教程中,你了解了如何为协议缓冲区输入序列化实现自定义 .NET 反序列化程序。 若要了解有关创建自定义反序列化程序的详细信息,请继续阅读以下文章: