Hi,

for joins, data of both inputs must be co-located, ie, partitioned on
the same key and have the same number of partitions:

See "Note" box at:
http://docs.confluent.io/3.0.0/streams/developer-guide.html?highlight=join#joining-streams

From an older email thread about the same issue:

>>> If you change the key, your partitioning changes, ie, is not valid anymore.
>>> Thus, the joins (which assumes co-located data) cannot be performed
>>> (this is the reason why sources get set to null). You can write to an
>>> intermediate topic via .through(...) to get a valid partitioning:
>>>
>>> KStream dataStream = builder.stream(...).map(...).through(...);
>>>

Btw: this problem got fixed already; if you use current trunk version
you do not need the additional call to through(...)

-Matthias


On 06/29/2016 06:02 PM, mishadoff wrote:
> Hey,
> 
> I am trying to understand kafka-streams and doing a simple prototype for 
> joining KStream with KTable, but stuck at the error:
> 
> Invalid topology building: KSTREAM-MAP-0000000001 and 
> KSTREAM-AGGREGATE-0000000004 are not joinable
> 
> I tracked down the issue is thrown where stream or table have set sourceNodes 
> to null, and confirmed both of them are null in my application.
> 
> Interesting, when I initially read kafka topic into KStream, sourceNodes are 
> not null, but later after doing simpel map operation (to exclude unneded 
> fields an apply conversion) source nodes are deleted.
> 
> Could someone clarify what sourceNodes are needed for and why they erased 
> after map?
> 
> Thanks!
> 
> — Misha
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to