2017-07-11 91 views
1

我有下面的場景,我有多個大文件(每個大約200M記錄),我想通過kafka發送該文件。爲了獲得更好的性能,我想使用Kafka分區來發送數據。現在我的數據要求是針對特定的密鑰,所有的消息都應該傳送到特定的分區。目前,對於POC,我使用10個卡夫卡分區,並使用數字ID字段對數據進行分區。我的邏輯只是檢查IT的最後一位數字並將記錄發送到相應的kafka分區。 EX:ID - ***7將總是進入分區7.現在這個邏輯不能用於推廣我的代碼,因爲密鑰可以是非數字的,分區數量可以根據需要增加/減少。在kafka分區中均勻分佈數據的分區技術

我想知道是否有一個哈希算法,可以在特定範圍內生成值(例如,如果我必須有10個分區,那麼它應該創建以0-9結尾的所有哈希值)?

回答

4

是的,你可以簡單地使用密鑰的哈希碼模數分區。但這就是默認分區程序無論如何使用的,所以不妨使用它。

https://github.com/apache/kafka/blob/0.11.0/clients/src/main/java/org/apache/kafka/clients/producer/internals/DefaultPartitioner.java#L69

+0

米哈爾感謝您的評論,我看到有關於DefaultPartitioner非常少的文檔。每次通過時都會爲同一個密鑰生成相同的散列分區號碼對? – Explorer

+0

是的,除非您更改分區數量。 –