你当前正在访问 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 存储帐户中创建容器。 你创建的容器将用于存储与流分析作业相关的资产。 如果存储帐户已具有现有的容器,则可以使用这些容器。 如果没有,则需要新建容器

创建自定义反序列化程序

  1. 打开 Visual Studio 并选择“文件”>“新建”>“项目”。 搜索“流分析”并选择“Azure 流分析自定义反序列化程序项目(.NET)” 。 为项目指定一个名称,例如 Protobuf 反序列化程序。

    Create Visual Studio dotnet standard class library project

  2. 在解决方案资源管理器中,右键单击“Protobuf 反序列化程序”项目,并从菜单中选择“管理 NuGet 包” 。 然后安装 Microsoft.Azure.StreamAnalytics 和 Google.Protobuf NuGet 包 。

  3. MessageBodyProto 类MessageBodyDeserializer 类添加到项目。

  4. 生成“Protobuf 反序列化程序”项目。

添加 Azure 流分析项目

  1. 在解决方案资源管理器中,右键单击“Protobuf 反序列化程序”解决方案,然后选择“添加”>“新项目”。 在“Azure 流分析”>“流分析”下,选择“Azure 流分析应用程序”。 将其命名为 ProtobufCloudDeserializer 并选择“确定” 。

  2. 右键单击 Azure 流分析项目 ProtobufCloudDeserializer 下的“引用” 。 在“项目”下添加“Protobuf 反序列化程序” 。 该程序将自动填充。

配置流分析作业

  1. 双击“JobConfig.json”。 使用默认配置,但以下设置除外:

    设置 建议的值
    全局存储设置资源 选择当前帐户中的数据源
    全局存储设置订阅 <你的订阅>
    全局存储设置存储帐户 <你的存储帐户>
    自定义代码存储设置资源 选择当前帐户中的数据源
    自定义代码存储设置存储帐户 <你的存储帐户>
    自定义代码存储设置容器 <你的存储容器>
  2. 在“输入”下双击“Input.json” 。 使用默认配置,但以下设置除外:

    设置 建议的值
    Source Blob 存储
    资源 选择当前帐户中的数据源
    订阅 <你的订阅>
    存储帐户 <你的存储帐户>
    容器 <你的存储容器>
    事件序列化格式 其他(Protobuf、XML、专有…)
    资源 从 ASA 项目引用或 CodeBehind 加载
    CSharp 程序集名称 ProtobufDeserializer.dll
    类名 MessageBodyProto.MessageBodyDeserializer
    事件压缩类型
  3. 将以下查询添加到 Script.asaql 文件中。

    SELECT * FROM Input
    
  4. 下载示例 protobuf 输入文件。 在“输入”文件夹中右键单击“Input.json”,然后选择“添加本地输入” 。 然后双击“local_Input.json”并配置以下设置:

    设置 建议的值
    输入别名 输入
    源类型 数据流
    事件序列化格式 其他(Protobuf、XML、专有…)
    CSharp 程序集名称 ProtobufDeserializer.dll
    类名 MessageBodyProto.MessageBodyDeserializer
    本地输入文件路径 <已下载的示例 protobuf 输入文件的文件路径>

执行流分析作业

  1. 打开“Script.asaql”并选择“在本地运行” 。

  2. 观察“流分析本地运行结果”中的结果。

已成功为流分析作业实现自定义反序列化程序! 在本教程中,已在本地测试自定义反序列化程序。 对于实际数据,可以正确配置输入和输出。 然后将作业从 Visual Studio 提交到 Azure,以使用刚刚实现的自定义反序列化程序在云中运行作业。

调试反序列化程序

可以在本地采用调试标准 .NET 代码的方式调试 .NET 反序列化程序。

  1. 右键单击“ProtobufCloudDeserializer”项目名称并将其设置为启动项目。

  2. 在函数中添加断点。

  3. F5 开始调试。 程序按预期在断点处停止。

清理资源

若不再需要资源组、流式处理作业以及所有相关资源,请将其删除。 删除作业可避免对作业使用的流单元进行计费。 如果计划在将来使用该作业,可以先停止它,等到以后需要时再重启它。 如果你不打算继续使用此作业,请使用以下步骤删除本教程中创建的所有资源:

  1. 在 Azure 门户的左侧菜单中选择“资源组”,然后选择已创建资源的名称。

  2. 在资源组页上选择“删除”,在文本框中键入要删除的资源的名称,然后选择“删除”。

后续步骤

在本教程中,你了解了如何为协议缓冲区输入序列化实现自定义 .NET 反序列化程序。 若要了解有关创建自定义反序列化程序的详细信息,请继续阅读以下文章: