使用事件中心接收器调试 Azure 流分析

可以使用 Azure 流分析中的 Azure 事件中心,从作业中引入或输出作业。 使用事件中心的最佳做法是使用多个使用者组来确保作业的伸缩性。 其中一个原因是,对于特定的输入,流分析作业中读取器的数量会影响单个使用者组中的读取器数量。 接收器的精确数量取决于横向扩展的拓扑逻辑的内部实现详细信息。 接收器的数量不向外部公开。 读取器的数量会在作业启动时或作业升级期间发生更改。

Note

当读取器的数量在作业升级期间发生更改时,暂时性警告将被写入到审核日志中。 流分析作业会自动从这些暂时性问题中恢复。

每个分区的读取器数超过事件中心限制(5 个)

每个分区的读取器数超过数据中心限制(5 个)的情况如下:

  • 多个 SELECT 语句:如果使用引用同一个事件中心输入的多个 SELECT 语句,则每个 SELECT 语句都将导致新建一个接收器。
  • UNION:使用 UNION 时,可能存在引用同一个事件中心或使用者组的多个输入。
  • SELF JOIN:使用 SELF JOIN 操作时,可能会多次引用同一个事件中心。

解决方案

下列最佳做法可帮助缓解每个分区的读取器数超过数据中心限制(5 个)的情况。

使用 WITH 子句将查询拆分为多个步骤

WITH 子句将指定可由查询中的 FROM 子句引用的临时命名结果集。 在单个 SELECT 语句的执行范围内定义 WITH 子句。

例如,与其使用此查询:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

不如使用此查询:

WITH input (
   SELECT * FROM inputEventHub
) as data

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

确保输入绑定到不同的使用者组

对于有三个或三个以上输入连接到同一事件中心的查询,请创建单独的使用者组。 这需要创建额外的流分析输入。

获取帮助

若要获取更多帮助,请访问我们的 Azure 流分析论坛

后续步骤