Bird
Raised Fist0
Kafkadevops~10 mins

Join operations (KStream-KStream, KStream-KTable) in Kafka - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to join two KStreams by key using an inner join.

Kafka
KStream<String, String> joinedStream = stream1.[1](stream2, (value1, value2) -> value1 + value2, JoinWindows.of(Duration.ofMinutes(5)), Joined.with(Serdes.String(), Serdes.String(), Serdes.String()));
Drag options to blanks, or click blank then click option'
Afilter
BleftJoin
Cjoin
DouterJoin
Attempts:
3 left
💡 Hint
Common Mistakes
Using leftJoin instead of join causes a different join behavior.
Using filter does not perform a join.
2fill in blank
medium

Complete the code to join a KStream with a KTable using a left join.

Kafka
KStream<String, String> joinedStream = stream.[1](table, (streamValue, tableValue) -> streamValue + (tableValue == null ? "" : tableValue));
Drag options to blanks, or click blank then click option'
Ajoin
Bfilter
CouterJoin
DleftJoin
Attempts:
3 left
💡 Hint
Common Mistakes
Using join instead of leftJoin excludes stream records without matching table keys.
Using outerJoin is not supported between KStream and KTable.
3fill in blank
hard

Fix the error in the join window definition for a KStream-KStream join.

Kafka
KStream<String, String> joinedStream = stream1.join(stream2, (v1, v2) -> v1 + v2, JoinWindows.[1](Duration.ofMinutes(10)), Joined.with(Serdes.String(), Serdes.String(), Serdes.String()));
Drag options to blanks, or click blank then click option'
Aof
BofTimeDifferenceWithNoGrace
CwithTimeDifferenceAndGrace
DofMillis
Attempts:
3 left
💡 Hint
Common Mistakes
Using deprecated or incorrect window methods causes runtime errors.
Using ofMillis expects a long, not a Duration.
4fill in blank
hard

Fill both blanks to create a KStream-KTable join with correct Serdes and join type.

Kafka
KStream<String, String> result = stream.[1](table, (sValue, tValue) -> sValue + tValue, Joined.with(Serdes.[2], Serdes.String(), Serdes.String()));
Drag options to blanks, or click blank then click option'
AleftJoin
Bjoin
CString
DInteger
Attempts:
3 left
💡 Hint
Common Mistakes
Using join instead of leftJoin excludes stream records without matching keys.
Using Integer serde for string keys causes serialization errors.
5fill in blank
hard

Fill all three blanks to create a KStream-KStream join with a 5-minute window and correct join type and serde.

Kafka
KStream<String, String> joined = stream1.[1](stream2, (v1, v2) -> v1 + v2, JoinWindows.[2](Duration.ofMinutes(5)), Joined.with(Serdes.[3], Serdes.String(), Serdes.String()));
Drag options to blanks, or click blank then click option'
Ajoin
BleftJoin
Cof
DString
Attempts:
3 left
💡 Hint
Common Mistakes
Using leftJoin instead of join changes join semantics.
Using incorrect window method causes errors.
Using wrong serde causes serialization issues.

Practice

(1/5)
1. What is the main difference between a KStream-KStream join and a KStream-KTable join in Kafka Streams?
easy
A. KStream-KStream joins require a time window; KStream-KTable joins do not.
B. KStream-KTable joins require a time window; KStream-KStream joins do not.
C. Both joins require a time window to match records.
D. Neither join requires a time window.

Solution

  1. Step 1: Understand KStream-KStream join behavior

    KStream-KStream joins combine records from two streams that occur within a specified time window.
  2. Step 2: Understand KStream-KTable join behavior

    KStream-KTable joins enrich stream records with the latest matching table record without needing a time window.
  3. Final Answer:

    KStream-KStream joins require a time window; KStream-KTable joins do not. -> Option A
  4. Quick Check:

    Time window needed only for KStream-KStream joins [OK]
Hint: Remember: only KStream-KStream joins need time windows [OK]
Common Mistakes:
  • Confusing which join requires a time window
  • Thinking both joins behave the same
  • Assuming KStream-KTable join needs time window
2. Which of the following is the correct syntax to perform a KStream-KTable join in Kafka Streams?
easy
A. ktable.join(kstream, (tableValue, streamValue) -> tableValue + streamValue);
B. kstream.join(ktable, JoinWindows.of(Duration.ofMinutes(5)), (v1, v2) -> v1 + v2);
C. kstream.join(ktable, (streamValue, tableValue) -> streamValue + tableValue);
D. kstream.join(ktable, (v1, v2) -> v1 + v2, JoinWindows.of(Duration.ofMinutes(5)));

Solution

  1. Step 1: Identify KStream-KTable join syntax

    KStream-KTable join uses kstream.join(ktable, ValueJoiner) without a time window.
  2. Step 2: Check options for correct method signature

    kstream.join(ktable, (streamValue, tableValue) -> streamValue + tableValue); matches the correct syntax: join without window and with a ValueJoiner lambda.
  3. Final Answer:

    kstream.join(ktable, (streamValue, tableValue) -> streamValue + tableValue); -> Option C
  4. Quick Check:

    KStream-KTable join syntax = kstream.join(ktable, (streamValue, tableValue) -> streamValue + tableValue); [OK]
Hint: KStream-KTable join has no time window parameter [OK]
Common Mistakes:
  • Adding JoinWindows to KStream-KTable join
  • Reversing stream and table parameters
  • Using KTable join method on KStream
3. Given the following Kafka Streams code snippet, what will be the output if the input streams have matching keys within the 5-minute window?
var joinedStream = stream1.join(stream2, (v1, v2) -> v1 + v2, JoinWindows.of(Duration.ofMinutes(5)));
joinedStream.foreach((key, value) -> System.out.println(key + ":" + value));
medium
A. Prints combined values for keys appearing in both streams within 5 minutes
B. Prints combined values for all keys in stream1 regardless of stream2
C. Prints only keys from stream2 with no combination
D. Throws a runtime exception due to missing KTable

Solution

  1. Step 1: Understand KStream-KStream join with window

    The join combines records from both streams with matching keys occurring within the 5-minute window.
  2. Step 2: Analyze output behavior

    For matching keys within the window, the values are combined using the lambda (v1 + v2) and printed.
  3. Final Answer:

    Prints combined values for keys appearing in both streams within 5 minutes -> Option A
  4. Quick Check:

    KStream-KStream join outputs combined matching keys [OK]
Hint: KStream-KStream join outputs combined values within window [OK]
Common Mistakes:
  • Assuming all keys from stream1 print regardless of stream2
  • Confusing KStream-KTable join behavior
  • Expecting runtime error without KTable
4. Identify the error in the following Kafka Streams join code:
var joined = stream1.join(stream2, (v1, v2) -> v1 + v2);
joined.print();
medium
A. Incorrect lambda syntax for join function
B. Missing JoinWindows parameter for KStream-KStream join
C. Using print() instead of foreach() causes error
D. stream2 should be a KTable, not a KStream

Solution

  1. Step 1: Check join method parameters

    KStream-KStream join requires a JoinWindows parameter to specify the time window for matching events.
  2. Step 2: Identify missing parameter

    The code omits the JoinWindows argument, causing a compilation error.
  3. Final Answer:

    Missing JoinWindows parameter for KStream-KStream join -> Option B
  4. Quick Check:

    KStream-KStream join needs JoinWindows [OK]
Hint: KStream-KStream join always needs JoinWindows [OK]
Common Mistakes:
  • Forgetting JoinWindows in KStream-KStream join
  • Confusing KStream-KTable join syntax
  • Assuming print() is invalid method
5. You want to enrich a stream of user clicks (KStream) with the latest user profile data stored in a KTable. Which join operation should you use and why?
hard
A. Use KStream-KStream join without a window to join clicks and profiles.
B. Use KStream-KStream join with a 10-minute window to combine clicks and profiles.
C. Use KTable-KTable join because both are tables.
D. Use KStream-KTable join to enrich clicks with latest profile data without time window.

Solution

  1. Step 1: Identify data types and join needs

    User clicks are a stream (KStream), and user profiles are stored as a table (KTable).
  2. Step 2: Choose appropriate join type

    KStream-KTable join enriches stream data with the latest table data for matching keys without needing a time window.
  3. Final Answer:

    Use KStream-KTable join to enrich clicks with latest profile data without time window. -> Option D
  4. Quick Check:

    KStream-KTable join enriches stream with latest table data [OK]
Hint: Enrich stream with table data using KStream-KTable join [OK]
Common Mistakes:
  • Using KStream-KStream join unnecessarily
  • Adding time window to KStream-KTable join
  • Confusing KTable-KTable join for stream enrichment
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard