Я использую Spark Structured Streaming в Databricks.Мой код выглядит так:
rawEvents
.as[EventRow]
.groupByKey(_.deviceId)
.mapGroupsWithState(GroupStateTimeout.ProcessingTimeTimeout)(updateAcrossEvents)
.writeStream
.queryName("events_per_window")
.format("memory")
.outputMode("update")
.start()
rawEvents
- это набор данных Spark Structured Streaming.Код работает как положено, за исключением того, что он генерирует выходные строки примерно каждые 20 секунд (rawEvents
получает несколько событий в секунду).Можно ли как-то принудительно возвращать строки?Я хотел бы иметь по крайней мере 1 строку в секунду.
Я пытался добавить водяной знак
.withWatermark("datetimeColumn", "1 second")
триггер
.trigger(Trigger.ProcessingTime(1, java.util.concurrent.TimeUnit.SECONDS))
и изменить GroupStateTimeoutNoTimeout.Но результаты всегда одинаковы.
Я не сказал вам точно, что я пытаюсь сделать, потому что я не думаю, что это актуально.Если это так, вы можете посмотреть пример на этой странице, он очень похож: https://databricks.com/blog/2017/10/17/arbitrary-stateful-processing-in-apache-sparks-structured-streaming.html