非分区流分析作业输出

Non-partitioned Stream Analytics Job output

在 Azure 中,我有一个分区数为 5 的事件中心和一个流分析作业,它以 json 格式将数据从中心保存到 blob 存储。所以现在创建了 5 个文件来存储传入数据。

是否可以在不更改中心分区的情况下配置流分析作业,以便将所有数据保存到一个文件中?

作为参考,描述了如何拆分输出文件的考虑因素here

在您的情况下,满足的条件是:

If the query is fully partitioned, and a new file is created for each output partition

这就是诀窍,如果您的查询是从事件中心(已分区)到存储帐户(通过拆分文件匹配传入分区)的直通(不围绕分区进行混洗),那么您的作业始终是完全分区的。

如果您不关心性能,您可以做的是打破分区对齐。为此,您可以重新分区 your input or your query (via snapshot aggregation).

但在我看来,您应该考虑使用另一种工具(ADF、Power BI 数据流)在下游处理这些。您应该看到这些文件是着陆文件,针对查询吞吐量进行了优化。如果从作业中删除分区对齐,则会严重限制其扩展和吸收传入流量峰值的能力。

在尝试了 建议的分区后,我发现可以通过更改流分析作业配置来实现我的目标。

有不同compatibility levels for stream analytics jobs and the latest one at the moment (1.2) introduced automatic parallel query execution for input sources with multiple partitions:

Previous levels: Azure Stream Analytics queries required the use of PARTITION BY clause to parallelize query processing across input source partitions.

1.2 level: If query logic can be parallelized across input source partitions, Azure Stream Analytics creates separate query instances and runs computations in parallel.

因此,当我将作业的兼容级别更改为 1.1 时,它开始将所有输出写入 blob 存储中的单个文件。