kafka foreing键与最后一条记录连接

8mmmxcuj  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(497)

我有两个流在键和值上都有相同的类型,

- first represent a finantial instrument with key (string) Currency (Eur-USD)
  - second represent a finantial instrument with key (tenor) Eur-3month , Eur-6month , USD-3month

  - first stream: <key, value> = <Eur , { data , .... } >
  - second stream: <key, value> = <Eur-3month , { data .... }>

要求一个流中的最后一个流必须与另一个流连接,并且始终接收最后一个密钥,具体取决于(月份:3m、6m、7m)

- i thought that the streams must be K-tables is this the correct way to join them and have in output always the last join on the last updates ? 
   - i can have the same results with a stream ?

在这句话中,我发现我能用的最相似的东西是

KStream<K, RV> join(final GlobalKTable<GK, GV> globalKTable,
                                 final KeyValueMapper<? super K, ? super V, ? extends GK> keyValueMapper,
                                 final ValueJoiner<? super V, ? super GV, ? extends RV> joiner)

使用keyvaluemapper,我可以连接键,但是在左侧,我有一个流而不是k表,这不会更新左侧“updates”上的连接

relj7zay

relj7zay1#

通常,您选择较小的流(具有较少不同键的流)并将其具体化为一个ktable,方法是将它作为表(kstreambuilder.table())从kafka读取,或者使用.groupbykey()后跟reduce()或aggregate()。
然后你加入你的另一个流与ktable。
或者,您可以将两个流具体化为ktable并将它们连接起来。我没有详细了解您的用例,因此无法建议哪一个更好。
请参见:https://cwiki.apache.org/confluence/display/kafka/kafka+streams+join+semantics

相关问题