Java Kafka流通过具有复杂条件的键连接
我正试图通过键连接Java Kafka流通过具有复杂条件的键连接,java,apache-kafka,apache-kafka-streams,kafka-join,Java,Apache Kafka,Apache Kafka Streams,Kafka Join,我正试图通过键连接KStream和GlobalKTable,但要使用特定的逻辑 StreamsBuilder builder = new StreamsBuilder(); KStream<String, Integer> stream = builder.stream(inputTopic1); // key = "ABC" GlobalKTable<String, Integer> table = builder.globalTable(inp
KStream
和GlobalKTable
,但要使用特定的逻辑
StreamsBuilder builder = new StreamsBuilder();
KStream<String, Integer> stream = builder.stream(inputTopic1); // key = "ABC"
GlobalKTable<String, Integer> table = builder.globalTable(inputTopic2); // key = "ABC"
stream.join(table, // join first by "ABC" = "ABC", then by "AB" = "AB", then by "A" = "A"
(key, value) -> key,
(valueLeft, valueRigth) -> {/* identify by which condition the join was performed */});
StreamsBuilder builder=newstreamsbuilder();
KStream stream=builder.stream(inputOpic1);//key=“ABC”
GlobalKTable=builder.globalTable(inputOpic2);//key=“ABC”
join(表,//首先通过“ABC”=“ABC”连接,然后通过“AB”=“AB”,然后通过“A”=“A”连接
(键,值)->键,
(valueLeft,valueRigth)->{/*标识执行联接的条件*/});
例如,如果key=“ABC”,则:
- 首先,用完整的键连接,即“ABC”=“ABC”
- 然后,如果未连接,则通过前两个符号连接(删除一个符号)-即“AB”=“AB”
- 最后,尝试只使用一个符号连接,即“A”=“A”
提前谢谢 对多个表使用一系列左联接是可能的(如果您知道经常要尝试联接)。如果联接成功,则跳过下一个联接。结合使用
leftJoin()
和branch()
应该允许您在每次连接后将流拆分为“已连接”和“重试”。最后,如果需要,可以merge()
将不同的结果流合并在一起