[英]Kafka Streams join by key with complex condition
我正在嘗試通過鍵將KStream
與GlobalKTable
連接KStream
,但具有特定的邏輯。
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 */});
例如,如果 key = "ABC",則:
此外,還需要知道執行連接的條件 - 例如,通過 3 個字母 / 通過 2 個字母 / 通過 1 個字母。
問題是,是否有可能,或者我應該尋找解決方法? 例如,使用相應的鍵(帶有“ABC”鍵的表,帶有“AB”鍵的表和帶有“A”鍵的表)制作 GlobalKTable 的副本並執行 3 個單獨的連接? 或者也許還有其他建議?
提前致謝!
對多個表使用一系列左連接是可能的(如果您知道經常想嘗試連接)。 如果連接成功,則跳過下一個連接。 使用leftJoin()
和branch()
應該允許您在每次加入后將流拆分為“加入”和“重試”。 最后,如果需要,您可以merge()
不同的結果流合並在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.