分区技术在kafka分区中均匀分布数据

时间:2017-07-11 18:28:08

标签: apache-kafka partitioning

我有以下情况,我有多个大文件(每个约200M记录),我想通过kafka发送该文件。为了获得更好的性能,我想使用Kafka分区来发送数据。现在我的数据要求是针对特定键,所有消息都应该转到特定分区。目前,对于POC,我使用10个kafka分区并使用数字ID字段对数据进行分区。我的逻辑只是检查IT的最后一位,并将记录发送到相应的kafka分区。 EX:ID - ***7将始终进入分区7.现在,此逻辑不能用于概括我的代码,因为密钥可以是非数字的,并且可以根据需要增加/减少分区数。

我想知道是否有一个哈希算法可以根据给定的范围生成特定范围内的值(如果我必须有10个分区,那么它应该创建以0-9结尾的所有哈希值)?

1 个答案:

答案 0 :(得分:6)

是的,你可以简单地使用密钥的哈希码来模数分区的数量。但这是默认分区程序正在使用的东西,所以不妨只使用它。

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