To understand joins better, you might want to check out: https://www.confluent.io/blog/crossing-streams-joins-apache-kafka/
KSQL uses the same join semantics as Kafka Streams. -Matthias On 7/11/18 8:01 AM, Guozhang Wang wrote: > Hello Jonathan, > > At the very high-level, KSQL statements is compiled into a Kafka Streams > topology for execution. And the concept "state stores" are for Kafka > Streams, not for KSQL, where inside the topology for those processor nodes > that need stateful processing, like Joins, one or more state stores would > be associated with the nodes. > > Back to your example, this KSQL statement will be compiled into a Kafka > Streams that roughly looks like this: > > ---------- > > Kafka topic that defines stream "topics" --> source node --> join node > (queries the "users-state" store, as generated below) --> sink node --> Kafka > topic that defines stream "orders_enriched" > > Kafka topic that defines table "users" --> source node --> materialization > node (associated with a state store, let's name it "users-state") > > ---------- > > That is, one state store will be used to materialize the table changelog > stream for "users", where the other stream's record will query on. > > In Kafka Streams, you can query a state store following the interactive > query mechanism: > > https://kafka.apache.org/documentation/streams/developer-guide/interactive-queries.html > > It is not supported in KSQL yet. > > > > Guozhang > > > > > On Wed, Jul 11, 2018 at 1:41 AM, Jonathan Roy < > jonathan....@caldera.com.invalid> wrote: > >> Hi Kafka users, >> >> I am very new to Kafka and more globally to stream processing, and am >> trying to understand some of the concepts used by Kafka. From what I >> understand, a key-value state store is created on each processor node that >> performs stateful operations such as aggregations or joins. Let’s take an >> example. I have an ‘orders’ stream and a ‘users’ table, and I want to >> enrich the orders events with the corresponding users information, using >> the KSQL CLI: >> >> CREATE STREAM orders_enriched AS SELECT o.id <http://o.id/>, o.article, >> o.quantity, o.userId, u.name, u.address, u.email FROM orders o LEFT JOIN >> users u ON o.userId = u.id <http://u.id/>; >> >> Where is located the state store in this case? What will it contain >> exactly? Is it possible to query it from another node? >> >> Thanks beforehand for your help! >> >> Jonathan > > > >
signature.asc
Description: OpenPGP digital signature