【问题标题】:Partitioning technique to distribute data evenly in kafka partitions在 kafka 分区中均匀分布数据的分区技术
【发布时间】:2017-07-11 18:28:08
【问题描述】:

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

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

【问题讨论】:

    标签: apache-kafka partitioning


    【解决方案1】:

    是的,您可以简单地使用密钥的哈希码以分区数为模。但无论如何,这就是默认分区器正在使用的东西,所以不妨直接使用它。

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

    【讨论】:

    • 感谢 Michal 的评论,我发现关于 DefaultPartitioner 的文档非常少。每次传递时都会为同一个key生成相同的hash-partition number对吗?
    • 是的,除非您更改分区数。
    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2018-11-26
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多