使用 TriggerAvailableNow 和 Eventhubs 进行 Spark 结构化流处理

问题描述 投票:0回答:1

我一直在尝试将数据块中的增量表中的事件写入事件集线器,并且在尝试使其与 Trigger availableNow=True 一起使用时遇到了问题,

我基本上收集事件,首先读取所需的增量表,添加水印,进行一些转换,创建一个带有一些添加的元数据列的事件数据帧,将其转换为一种格式以推送到事件中心,

问题是,当我将processingTime触发器设置为2秒时,它可以工作,但在availableNow = True时不起作用,我无法理解为什么会这样。

任何人都可以提供一个解决方案,使其与 availableNow 一起工作,或者它不工作的原因

谢谢

spark-structured-streaming azure-eventhub
1个回答
0
投票

“立即可用”和“处理时间”触发器具有非常不同的语义,因此很难知道“不起作用”是什么意思。回顾一下:

  • “立即可用”将仅处理结构化流作业开始时可用的数据。如果没有新数据可用,流将完全退出
  • 参数为 2 秒的处理时间触发器将最多每 2 秒启动一个批次。如果第 0 秒没有可用数据,它将在第 2 秒检查是否有更多数据(如果有,则执行批处理)。

因此,如果您使用“Available Now”启动查询并注意到没有数据到达 EventHub,则很可能是因为没有新数据可用;它可能与处理时间(2 秒)触发器配合使用,因为作业不断轮询新数据并最终找到并处理该新数据。

您可以通过查看流查询进度的

numInputRows
指标来验证特定触发器实际正在处理的内容,该指标将打印到 驱动程序日志 中,您可以在 Spark UI 中找到该日志(注意:此日志不在 Databricks 笔记本单元的输出中)。

© www.soinside.com 2019 - 2024. All rights reserved.