[英]Does Kafka Streams GlobalKTable topic require the same number of partitions as KStream topic which it will be joining with?
我們想在 Kafka 流應用程序中使用 GlobalKTable。 輸入主題(KTable/KStream)有 N 個分區,並且 GlobalKTable 將用作 stream 應用程序中的字典。
GlobalKTable 的輸入主題是否必須與其他輸入主題(KTable/KStream 的來源)具有相同數量的分區?
據我了解,答案是否定的(不受限制,主題也可能有 M 個分區,其中 N > M),因為 GlobalKTable 在 stream 應用程序的每個實例中都已完全加載,並且在 KStream 加入期間不需要共同分區手術。 但我需要專家的確認!
謝謝!
更精確地:
為什么需要數據共同分區? 因為 KStream-KStream、KTable-KTable 和 KStream-KTable 連接是基於記錄的鍵執行的(例如,leftRecord.key == rightRecord.key),所以要求連接的輸入流/表是共同的鍵分區。
唯一的例外是 KStream-GlobalKTable 連接。 在這里,不需要共同分區,因為 GlobalKTable 的底層變更日志 stream 的所有分區都可用於每個 KafkaStreams 實例,即每個實例都有變更日志 stream 的完整副本。 此外,KeyValueMapper 允許從 KStream 到 GlobalKTable 的非基於鍵的連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.