Core concept

stream.withWatermark("eventTime", "10 minutes")
  .groupBy(window($"eventTime", "5 minutes"))
  .count()
Advertisement

How it works

Trade-off: longer watermark = more memory + more accurate.

Advertisement

Trade-offs + gotchas

Windowed aggregations. Stateful stream operations.