Java 卡夫卡外键与最后一条记录连接
我有两个流,在键和值上都有相同的类型Java 卡夫卡外键与最后一条记录连接,java,apache-spark,stream,apache-kafka,apache-kafka-streams,Java,Apache Spark,Stream,Apache Kafka,Apache Kafka Streams,我有两个流,在键和值上都有相同的类型 - 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 , {
- 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 .... }>
在这份声明中,我发现我能使用的最相似的东西是
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)
KStream连接(最终的GlobalKTable GlobalKTable,
final KeyValueMapper通常选择较小的流(具有较少不同键的流)并将其具体化为一个KTable,方法是将其作为表(KStreamBuilder.table())从kafka中读取,或者使用.groupByKey()后跟reduce()或aggregate()
然后,您将另一个流与该KTable连接
或者,您可以将两个流具体化为KTables并加入它们。我没有确切地了解您的用例的细节,因此无法建议哪一个更好
请参阅:问题与此类似,但是ktable ktable,是的,您没有遇到问题如果您按货币代码对两个主题进行分区,则不需要使用GlobalKTables。您可以使用普通的KTables获得更多的连接选项。问题不在GlobalKTables上,问题是在一个表中有一个外键,我们有一个K在另一个K-K'中,我想加入K=K
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)