我在Databricks中使用Spark结构化流。我的代码是这样的:
xtline income if id==X
rawEvents
.as[EventRow]
.groupByKey(_.deviceId)
.mapGroupsWithState(GroupStateTimeout.ProcessingTimeTimeout)(updateAcrossEvents)
.writeStream
.queryName("events_per_window")
.format("memory")
.outputMode("update")
.start()
是一个Spark结构化流数据集。
该代码按预期工作,除了它大约每20秒生成一次输出行(rawEvents
每秒接收多个事件)。我可以以某种方式强制更频繁地返回行吗?我想每秒至少有1行。
我尝试添加水印
rawEvents
触发器
.withWatermark("datetimeColumn", "1 second")
,然后将GroupStateTimeout更改为NoTimeout。但是结果总是一样。
我没有确切告诉您我要做什么,因为我认为这无关紧要。如果是这样,您可以查看此页面上的示例,它非常相似:https://databricks.com/blog/2017/10/17/arbitrary-stateful-processing-in-apache-sparks-structured-streaming.html