【问题标题】:Can we do query parallelization/ partitioning for a Azure Stream Analytics job which has multiple queries to multiple output types?我们可以为对多种输出类型有多个查询的 Azure 流分析作业进行查询并行化/分区吗?
【发布时间】:2021-12-10 19:01:47
【问题描述】:

从这个MS documentation 了解到,表存储和 Cosmos DB 确实支持使用 ASA 作业进行分区。

但是,它是否适用于,例如:

  1. 单个 ASA 作业
    • 输入:具有 8 个分区的事件中心
    • 输出:具有 4 个分区的表存储和具有 4 个分区的 Cosmos DB

上述工作是否能够利用查询并行化/分区的好处?

提前致谢。

【问题讨论】:

  • 我正在与工程部门仔细检查以获得明确的答案,但根据我目前的理解,这项工作不会完全平行。分区中的映射需要从输入到输出。
  • 我错了,支持,完整答案如下

标签: azure-stream-analytics


【解决方案1】:

是的,您在此处的场景是受支持的,但它比预期的要微妙一些。

这里的关键是表存储和 Cosmos DB 都是没有设置分区计数的输出。对于像您这样的工作,从逻辑的角度来看,ASA 实际上将为每个输出运行 8 个分区编写器。碰巧其中有 4 个会空着。或者更确切地说,不是 8 个写入 2 个输出,而是 8 个写入一个输出,4 个写入另一个输出。

请注意,如果您要将 EH 作为输出而不是 Table 或 Cosmos,则即使您只向 4 个分区发送数据,您也需要该 EH 具有 8 个分区,以保持完全并行化。

就查询而言,您需要编写如下内容:

WITH inputStream AS (
    SELECT * 
    FROM [input]
)

SELECT * 
INTO [table]
FROM inputStream
WHERE PartitionKey IN (1,2,3,4)

SELECT * 
INTO [cosmos]
FROM inputSTream
WHERE PartitionKey IN (5,6,7,8)

或任何不会破坏分区对齐的查询。

【讨论】:

    猜你喜欢
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2021-07-18
    • 1970-01-01
    • 2017-06-12
    相关资源
    最近更新 更多