You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure Stream Analytics作业每15分钟批量输出至ADLS Gen2

实现Azure Stream Analytics每15分钟批量输出事件到ADLS Gen2

核心思路

利用Azure Stream Analytics的**翻滚窗口(Tumbling Window)**实现15分钟的事件暂存,结合ADLS Gen2输出的命名规则,确保每15分钟批量输出一次数据。


步骤1:修改Stream Analytics查询语句

根据你的需求(无需聚合,仅批量输出事件),有两种常见写法:

写法1:将15分钟内的事件打包为数组输出(推荐)

这种方式会将每个窗口内的所有事件合并为一条记录,减少输出文件数量,更符合批量处理场景:

SELECT
    System.Timestamp() AS WindowEndTime, -- 标记当前批次的结束时间
    Collect() AS BatchEvents -- 将窗口内所有事件收集为JSON数组
INTO [ADLSGen2Output] -- 你的ADLS Gen2输出别名
FROM [EventHubInput] -- 你的Event Hub输入别名
GROUP BY TumblingWindow(minute, 15) -- 定义15分钟的翻滚窗口

写法2:保留每条事件独立输出

如果需要保留原始事件的每条记录,仅实现15分钟批量触发输出:

SELECT *
INTO [ADLSGen2Output]
FROM [EventHubInput]
TIMESTAMP BY EventEnqueuedUtcTime -- 用Event Hub的入队时间作为事件时间(也可替换为事件自身的时间字段)
GROUP BY TumblingWindow(minute, 15), * -- 按窗口+所有字段分组,确保每条事件都被输出

步骤2:配置ADLS Gen2输出的Blob命名规则

在输出配置中,修改Blob的命名模式,加入窗口时间变量,确保每个15分钟批次生成独立的Blob文件(或文件夹),示例:

batch-data/{date}/{time:yyyy-MM-dd-HH-mm}/events.json
  • {date}:自动替换为窗口结束时间的日期(格式yyyy-MM-dd)
  • {time:yyyy-MM-dd-HH-mm}:自动替换为窗口结束时间的精确到分钟的时间(会自动对齐15分钟间隔,比如2024-05-20-14-15、2024-05-20-14-30)

如果需要覆盖同一个Blob(而非生成新文件),可将命名模式设为固定路径,但不推荐这种方式(不利于数据追溯)。


步骤3:调整输出批量触发设置

在ADLS Gen2输出的配置页面,找到批量设置:

  • 将批量间隔设置为15分钟(与翻滚窗口周期一致)
  • 批量大小可设为较大值(如1000000字节),确保只有当窗口结束时才触发输出(避免提前达到大小阈值导致提前输出)

注意事项

  • 若事件自身包含业务时间戳,建议将TIMESTAMP BY替换为该字段,确保窗口按业务时间对齐,而非Event Hub的入队时间。
  • 测试阶段可先将窗口设为1分钟验证功能,确认正常后再改为15分钟。
  • 确保Stream Analytics作业的兼容性级别为1.2或更高(翻滚窗口在该级别下支持完整功能)。

内容的提问来源于stack exchange,提问作者GURMEET SINGH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:37:31