簡體   English   中英

Kafka Streams GlobalKTable 主題是否需要與它將加入的 KStream 主題相同數量的分區?

[英]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 和 GlobalTable(連接)的主題分區數可能不同。

來自 Kafka Streams 開發者指南

在高層次上,KStream-GlobalKTable 連接與 KStream-KTable 連接非常相似。 但是,與分區表相比,全局表以一定的代價為您提供了更大的靈活性:

  • 它們不需要數據共同分區。

更多詳情可在這找到:

全局表連接

加入共分區要求

更精確地:

為什么需要數據共同分區? 因為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM