了解事件处理

已完成

Azure 流分析是一种用于复杂事件处理和流数据分析的服务。 流分析用于:

  • 从输入(如 Azure 事件中心、Azure IoT 中心或 Azure 存储 blob 容器)引入数据。
  • 通过使用查询选择、投影和聚合数据值来处理数据。
  • 将结果写入到输出,例如 Azure Data Lake Gen 2、Azure SQL 数据库、Azure Synapse Analytics、Azure Functions、Azure 事件中心、Microsoft Power BI 或其他输出。

显示包含输入、查询和输出的流分析作业的图表

启动后,流分析查询将永久运行,在新数据到达输入时处理新数据,并将结果存储到输出中。

流分析保证刚好进行一次事件处理,以及至少进行一次事件传送,因此事件不会丢失。 它有内置的恢复功能,可以在事件传送失败时发挥作用。 流分析还提供内置的检查点来维护作业的状态,并生成可重复的结果。 由于 Azure 流分析是一种平台即服务 (PaaS) 解决方案,因此它是完全托管且高度可靠的。 它与各种源和目的地进行内置集成并提供灵活的可编程模型。 流分析引擎可实现内存中计算,因此提供了优异的性能。

Azure 流分析作业和群集

使用 Azure 流分析的最简单方法是在 Azure 订阅中创建流分析作业,配置其输入和输出,并定义该作业将用于处理数据的查询。 查询使用结构化查询语言 (SQL) 语法来表示,并且可以合并来自多个数据源的静态参考数据,以提供可与从输入中引入的流数据结合的查找值。

如果你的流处理要求很复杂并且占用大量资源,你可创建流分析群集,该群集使用与流分析作业相同的基础处理引擎,但位于专用租户中(因此你的处理不受其他客户的影响),并且具有可配置的可伸缩性,使你能够为特定方案定义吞吐量和成本的适当平衡。

输入

Azure 流分析可以从以下类型的输入引入数据:

  • Azure 事件中心
  • Azure IoT 中心
  • Azure Blob 存储
  • Azure Data Lake Storage Gen2

输入通常用于引用流式处理数据源,该数据源在添加新事件记录时进行处理。 此外,还可以定义用于引入静态数据的引用输入,以增强实时事件流数据。 例如,可以引入包含每个气象站的唯一 ID 的实时天气观测数据流,并使用静态引用输入来增强该数据,该输入将气象站 ID 与更有意义的名称相匹配。

输出

输出是将流处理结果发送到的目标。 Azure 流分析支持各种输出,可用于:

  • 保留流处理结果以供进一步分析;例如,将它们加载到数据湖或数据仓库中。
  • 显示数据流的实时可视化效果;例如,将数据追加到 Microsoft Power BI 中的数据集。
  • 为下游处理生成筛选或汇总的事件;例如,将流处理结果写入事件中心。

查询

流处理逻辑封装在查询中。 查询是使用 SQL 语句定义的,这些语句从一个或多个输入中选择数据字段、筛选或聚合数据并将结果写入到输出中。 例如,以下查询筛选“天气事件”输入中的事件,以仅包含“温度”值小于 0 的事件中的数据,并将结果写入“冷温度”输出:

SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0

系统会自动创建一个名为 EventProcessedUtcTime 的字段,用于定义 Azure 流分析查询处理事件的时间。 可以使用此字段来确定事件的时间戳,也可以使用 TIMESTAMP BY 子句显式指定另一个“日期/时间”字段,如本示例所示。 根据从中读取流式处理数据的输入,可以自动创建一个或多个潜在的时间戳字段;例如,使用事件中心输入时,会生成一个名为 EventQueuedUtcTime 的字段,用于记录事件中心队列中接收事件的时间。

当在临时窗口上聚合数据时,用作时间戳的字段非常重要,稍后将对此进行讨论。