使用作业模拟优化查询

提高Azure 流分析(ASA)作业性能的一种方法是在查询中应用并行度。 本文演示如何使用Azure门户中的作业模拟和Visual Studio Code(VS Code)来评估流分析作业的查询并行度。 了解如何使用不同数量的流式处理单元可视化查询执行,并基于编辑建议改进查询并行度。

什么是并行查询?

查询并行度通过创建多个进程(或流节点)并并行执行查询来划分查询的工作负荷。 它大大减少了查询的总体执行时间,因此需要更少的流式处理时间。

若要使作业并行,必须对齐所有输入、输出和查询步骤,并使用相同的分区键。 查询逻辑分区由用于聚合的键(GROUP BY)确定。

若要详细了解查询并行化,请参阅在 Azure 流分析中利用查询并行化。

在 VS Code 中使用作业模拟

作业模拟功能模拟作业如何在Azure中运行拓扑。 在本教程中,你将了解如何根据编辑建议提高查询性能,并使其并行执行。 例如,我们使用一个非并行作业,从一个事件中心获取输入数据,并将结果发送到另一个事件中心。

Prerequisites:

  • VS Code 的 ASA 工具扩展。 如果尚未安装,请按照 本指南 进行安装。
  • 为流分析作业配置实时输入和实时输出。
  • 必须在查询中包含实时输入和输出。

注释

作业模拟无法针对本地输入和输出模拟作业运行拓扑。 在模拟期间,不会向输出目标发送任何数据。

  1. 在 VS Code 中打开 ASA 项目。 转到查询文件 *.asaql ,然后选择 “模拟作业 ”以启动作业模拟。

    VS Code 在查询文件中打开作业关系图模拟器的屏幕截图。

  2. 在“ 关系图 ”选项卡下,它显示分配给作业的流节点数以及每个流式处理节点中的分区数。 以下截图展示了一个非并行作业的示例,其中数据在节点之间流动。

    使用作业关系图模拟器和显示作业拓扑的 VS Code 屏幕截图。

  3. 由于此查询 不是 并行的,因此可以选择“ 增强功能 ”选项卡以查看有关改进查询的建议。

    使用作业关系图模拟器和显示查询编辑建议的 VS Code 屏幕截图。

  4. 在增强功能列表中选择查询步骤,将突出显示相应的行,可以根据建议编辑查询。

    使用作业图模拟器的 VS Code 屏幕截图,其中突出显示了查询步骤。

    注释

    这些是用于改进查询并行度的编辑建议。 但是,如果在所有分区中使用聚合函数,则并行查询可能不适用于你的方案。

  5. 在本示例中,将 PartitionId 添加到 line#22 并保存更改。 然后,可以使用 刷新模拟 来获取新关系图。

    显示更新查询后刷新图的屏幕截图。

  6. 还可以调整 流式处理单元,以模拟在不同 SU 下流式处理节点的分配方式。 它让你了解需要多少 SU 来处理工作负荷。

    使用 SU 调整器的 VS Code 的屏幕截图。

在 Azure 门户中使用作业模拟

  1. 转到Azure门户中的查询编辑器,然后在底部窗格中选择“作业模拟”。 它根据您的查询和预定义的流单元模拟作业运行拓扑。 显示门户中打开作业模拟的屏幕截图。
  2. 选择“增强功能”以查看改进查询并行度的建议。 屏幕截图显示了门户中打开的作业模拟增强功能。
  3. 调整流式处理单元以查看处理工作负荷所需的 SU 数。 显示如何在门户中调整 su 的屏幕截图。

处理器级关系图

在您调整流式处理单元以模拟您的作业拓扑之后,可以展开任何流式处理节点,查看您的数据在处理器级别的处理情况。

gif 格式的屏幕截图,其中显示了模拟器的处理器级别关系图。

处理器级关系图允许你:

  • 观察如何在每个流式处理节点上分配和处理输入分区。
  • 了解每个计算处理器的时间偏移。
  • 提供有关输入和输出处理器是否并行对齐的信息。

若要将处理器映射到查询步骤,请在图表中双击。 此功能可帮助你查找执行聚合的查询步骤。

屏幕截图显示了 VS Code 中的作业模拟映射功能。

改进建议

下面是增强功能的说明:

Type 含义
不支持自定义分区 将输入的“xxx”分区键更改为“xxx”。
不匹配的分区数 输入和输出必须具有相同数量的分区。
分区键不匹配 输入、输出和每个查询步骤都必须使用相同的分区键。
不匹配的输入分区数 所有输入必须具有相同数量的分区。
输入分区键不匹配 所有输入都必须使用相同的分区键。
低兼容性级别 升级 JobConfig.json 文件中的 CompatibilityLevel。
找不到输出分区键 需要为输出使用指定的分区键。
不支持自定义分区 只能使用预定义的分区键。
查询步骤未使用分区 你的查询未使用任何 PARTITION BY 子句。

后续步骤

若要详细了解查询并行化和作业关系图,请查看以下教程: