Reading/Accessing批处理期间Spark流批处理开始时间

Reading/Accessing Spark stream batch start time during batch processing

我有尖峰流数据,每隔一段时间,批次就会备份,最终,它们会清除。我对这种性能很满意,但我的报告需要能够访问批处理 'start time'(至少是粗略的)。我一直在寻找它,但只在 Spark 控制台上找到它,列出了 'Streaming' 个批次(pending/current/past 都有一个 'batch time')。它必须在某处可用(在合理范围内尝试 DStream 结构)。是不是我遗漏了什么魔法?

有一个 'context' 开始时间,但这只是 Streaming Context 的开始时间,永远不会改变。

@罗伯特怀亚特,

您要找的是structured streaming监控

https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#monitoring-streaming-queries

解决方案更新:我发现在'onBatchStarted'方法中添加一个Streaming Listener来记录批处理时间是我所需要的。我在回调中的 Broadcast 变量中使用了该值,以使批处理开始时间可用于所有执行程序。简单的解决方案。

背景: 我正在将流式数据转换为时间序列数据。如果您从不落后于处理,则使用当前时间进行批处理是可行的。当大量数据命中并备份时,来自 Kafka 的直接流的好处使得处理积压变得简单,但当前系统时间不再有用。这就是与实际批处理时间相关联的价值所在。