【问题标题】:Non-partitioned Stream Analytics Job output非分区流分析作业输出
【发布时间】:2021-12-07 10:47:43
【问题描述】:

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

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

【问题讨论】:

    标签: azure azure-blob-storage azure-eventhub azure-stream-analytics


    【解决方案1】:

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

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

    如果查询是完全分区的,并且为每个输出分区创建一个新文件

    这就是这里的技巧,如果您的查询是从事件中心(分区)到存储帐户(通过拆分文件匹配传入分区)的直通(不移动分区),那么您的作业始终是完全分区的。

    如果您不关心性能,您可以做的是打破分区对齐。为此,您可以重新分区 your input 或您的查询(通过 snapshot aggregation)。

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

    【讨论】:

    • 感谢您的帮助。研究它帮助我找到了另一种解决问题的方法
    【解决方案2】:

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

    流分析作业有不同的compatibility levels,目前最新的(1.2)引入了自动parallel query execution for input sources with multiple partitions

    以前的级别:Azure 流分析查询需要使用 PARTITION BY 子句来跨输入源分区并行化查询处理。

    1.2 级别:如果查询逻辑可以跨输入源分区并行化,Azure 流分析会创建单独的查询实例并并行运行计算。

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

    【讨论】:

    • 很好的发现,但老实说,我不相信这是一个很好的长期解决方案。与 SQL Server 一样,每次我们提高兼容性级别都是因为我们添加了新功能并提高了性能。出于向后兼容性的原因,我们保留了之前的版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    相关资源
    最近更新 更多