【发布时间】:2017-08-25 02:53:00
【问题描述】:
Kafka 使用 math.abs(key.hashCode) % numPartitions 计算要发送的分区。
如果 hashCode 是 Integer.MIN_VALUE 怎么办?
由于 math.abs(Integer.MIN_VALUE) 是负数,kafka 会发送到负分区。这是怎么处理的,我应该关心这个吗?
【问题讨论】:
-
如你所说,它首先使用math.abs(),那你为什么要担心这种情况呢?
-
这不是一个坏问题:尝试比在 repl:
math.abs(Integer.MIN_VALUE)打印:res0: Int = -2147483648 -
@FredericA。哦,谢谢你的分享!
-
问题是什么??它应该去
math.abs(Int.MaxValue) % numPartitionspartition =2147483647 % numberOfPartitions但是你在哪里找到那个代码顺便说一句我看到下面的分区代码Utils.toPositive(nextValue) % availablePartitions.size()。其中 toPositive 是number & 0x7fffffff
标签: java scala apache-kafka