你当前正在访问 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 创建流分析作业。

创建自定义反序列化程序

  1. 打开终端,运行以下命令,以便在 Visual Studio Code 中为名为“ProtobufDeserializer”的自定义反序列化程序创建 .NET 类库。

    dotnet new classlib -o ProtobufDeserializer
    
  2. 转到 ProtobufDeserializer 项目目录,然后安装 Microsoft.Azure.StreamAnalyticsGoogle.Protobuf NuGet 包。

    dotnet add package Microsoft.Azure.StreamAnalytics
    
    dotnet add package Google.Protobuf
    
  3. MessageBodyProto 类MessageBodyDeserializer 类添加到项目。

  4. 生成 ProtobufDeserializer 项目。

添加 Azure 流分析项目

打开 Visual Studio Code 并选择“Ctrl+Shift+P”,以打开命令面板。 然后输入 ASA 并选择 ASA: Create New Project。 将其命名为“ProtobufCloudDeserializer”。

配置流分析作业

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

    设置 建议的值
    全局存储设置资源 选择当前帐户中的数据源
    全局存储设置订阅 <你的订阅>
    全局存储设置存储帐户 <你的存储帐户>
    CustomCodeStorage 设置存储帐户 <你的存储帐户>
    CustomCodeStorage 设置容器 <你的存储容器>
  2. 在 Inputs 文件夹下,打开 input.json 。 选择“添加实时输入”,然后从 Azure Data Lake Storage Gen2/Blob 存储添加输入,选择“从 Azure 订阅中选择” 。 使用默认配置,但以下设置除外:

    设置 建议的值
    名称 输入
    订阅 <你的订阅>
    存储帐户 <你的存储帐户>
    容器 <你的存储容器>
    序列化类型 选择“自定义”
    SerializationProjectPath 从 CodeLens 选择“选择库项目路径”,并选择在上一部分创建的 ProtobufDeserializer 库项目 。 选择“生成项目”以生成该项目
    SerializationClassName 从 CodeLens 选择“选择反序列化类”,以自动填充类名和 DLL 路径
    类名 MessageBodyProto.MessageBodyDeserializer

    添加自定义反序列化输入。

  3. 将以下查询添加到 ProtobufCloudDeserializer.asaql 文件。

    SELECT * FROM Input
    
  4. 下载示例 protobuf 输入文件。 在 Inputs 文件夹中右键单击“Input.json”,然后选择“添加本地输入” 。 然后,双击 local_input1.json 并使用默认配置(以下设置除外)。

    设置 建议的值
    选择本地文件路径 选择 CodeLens,以选择 <已下载的示例 protobuf 输入文件的文件路径>

执行流分析作业

  1. 打开 ProtobufCloudDeserializer.asaql,从 CodeLens 选择“在本地运行”,然后从下拉列表中选择“使用本地输入” 。

  2. 在“作业”图的“结果”选项卡下,你可以查看输出结果。 还可以单击该作业图中的步骤来查看中间结果。 有关更多详细信息,请参阅使用作业图进行本地调试

    检查本地运行结果。

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

调试反序列化程序

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

  1. 在 .NET 函数中添加断点。

  2. 从 Visual Studio Code 活动栏中单击“运行”,然后选择“创建 launch.json 文件” 。 创建启动文件。

    选择“ProtobufCloudDeserializer”,然后从下拉列表中选择“Azure 流分析” 。 创建启动文件 2。

    编辑 launch.json 文件,以将 .asaql 替换为 ProtobufCloudDeserializer.asaql。 配置启动文件 2。

  3. F5 开始调试。 程序按预期在断点处停止。 此操作适用于本地输入和实时输入数据。

    调试自定义反序列化程序。

清理资源

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

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

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

后续步骤

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