[Spark Streaming] Late Data Handling

Woong·2021년 12월 14일
0

Apache Spark

목록 보기
3/22

Spark docs

Spark Streaming 에서는 늦게 들어오는 event data 를 위해 watermark 기능을 제공한다.

import spark.implicits._

val words = ... // streaming DataFrame of schema { timestamp: Timestamp, word: String }

// Group the data by window and word and compute the count of each group
val windowedCounts = words
    .withWatermark("timestamp", "10 minutes")
    .groupBy(
        window($"timestamp", "10 minutes", "5 minutes"),
        $"word")
    .count()
  • 위 예제에서는 timestamp 필드를 기준으로 10분을 window로 하고, 10분까지는 late data 를 처리할 수 있는 watermark 를 적용하는 예시.
  • 위 경우엔 12:14분 데이터가 들어오면 watermark는 12:04 분으로 지정되고, 12:09 분 데이터가 유입되더라도 watermark 보다 이후 시간이기 때문에 정상 처리됨
  • watermark 가 12:11분이 되면 window의 중간 데이터였던 12:00 ~ 12:10 데이터는 삭제되고, 이후 10:10 이전 시점 데이터가 들어올 경우 무시된다.

0개의 댓글