Challenge - 5 Problems
Kafka Window Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of tumbling window aggregation
Given the following Kafka Streams code snippet that counts events per 5-second tumbling window, what is the output for the input events with timestamps in seconds: 1, 2, 3, 6, 7?
Kafka
KStream<String, String> input = builder.stream("input-topic"); KTable<Windowed<String>, Long> counts = input .groupByKey() .windowedBy(TimeWindows.ofSizeWithNoGrace(Duration.ofSeconds(5))) .count(); counts.toStream().foreach((windowedKey, count) -> { System.out.println("Window start: " + windowedKey.window().start() + ", count: " + count); });
Attempts:
2 left
💡 Hint
Remember that tumbling windows are fixed-size, non-overlapping intervals starting at multiples of the window size.
✗ Incorrect
The 5-second tumbling windows start at 0 and 5 seconds. Events at timestamps 1, 2, 3 fall into the window starting at 0, so count is 3. Events at 6 and 7 fall into the window starting at 5, so count is 2.
❓ Predict Output
intermediate2:00remaining
Sliding window count output
What is the output of the following Kafka Streams sliding window count for events with timestamps 1, 2, 3, 6, 7, if the sliding window size is 5 seconds and advance interval is 1 second?
Kafka
KStream<String, String> input = builder.stream("input-topic"); KTable<Windowed<String>, Long> counts = input .groupByKey() .windowedBy(SlidingWindows.ofTimeDifferenceWithNoGrace(Duration.ofSeconds(5))) .count(); counts.toStream().foreach((windowedKey, count) -> { System.out.println("Window start: " + windowedKey.window().start() + ", count: " + count); });
Attempts:
2 left
💡 Hint
Sliding windows overlap and advance by 1 second, so events can be counted in multiple windows.
✗ Incorrect
Sliding windows of 5 seconds with 1-second advance create overlapping windows starting at each second. Events at 1,2,3 fall into windows starting at 1,2,3 with count 3 each. Events at 6,7 fall into windows starting at 6,7 with count 2 each.
🔧 Debug
advanced2:00remaining
Identify the error in hopping window definition
The following Kafka Streams code attempts to create a hopping window of size 10 seconds that advances every 5 seconds. What error will this code produce?
Kafka
KStream<String, String> input = builder.stream("input-topic"); KTable<Windowed<String>, Long> counts = input .groupByKey() .windowedBy(HoppingWindows.ofSizeWithNoGrace(Duration.ofSeconds(10)).advanceBy(Duration.ofSeconds(5))) .count();
Attempts:
2 left
💡 Hint
Check the Kafka Streams API for the correct way to specify advance interval for hopping windows.
✗ Incorrect
The method advanceBy() is not available on the object returned by ofSizeWithNoGrace(). The correct way is to use HoppingWindows.of(Duration size, Duration advance) or chain advanceBy() before ofSizeWithNoGrace().
📝 Syntax
advanced2:00remaining
Correct syntax for session window with inactivity gap
Which of the following Kafka Streams code snippets correctly creates a session window with an inactivity gap of 10 seconds?
Attempts:
2 left
💡 Hint
Check the official Kafka Streams API for the correct method to specify session window gap.
✗ Incorrect
The correct method to create a session window with a gap is SessionWindows.with(Duration gap). Other options are invalid or do not exist.
🚀 Application
expert2:00remaining
Number of windows created by hopping window
If you have a hopping window of size 12 seconds that advances every 4 seconds, how many overlapping windows will an event at timestamp 20 seconds belong to?
Attempts:
2 left
💡 Hint
Calculate how many windows of size 12 seconds, advancing every 4 seconds, cover the timestamp 20.
✗ Incorrect
Hopping windows of size 12 seconds with 4 seconds advance overlap. Each event belongs to windows starting at timestamps: 8, 12, 16, and 20 seconds (all windows covering 20). So 4 windows include the event at 20 seconds.