[ https://issues.apache.org/jira/browse/FLINK-11964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17007243#comment-17007243 ]
Jingsong Lee commented on FLINK-11964: -------------------------------------- Hi [~fan_li_ya], sorry for late responding, thanks for involving. But "(hash ^ (hash >>> 16))" is very low overhead, I think it is OK to add. > Avoid hash collision of partition and bucket in HybridHashTable in Blink SQL > ---------------------------------------------------------------------------- > > Key: FLINK-11964 > URL: https://issues.apache.org/jira/browse/FLINK-11964 > Project: Flink > Issue Type: Improvement > Components: Runtime / Task > Reporter: Jingsong Lee > Priority: Major > > In HybridHashTable, first select the corresponding partition according to > hashCode, and then select the bucket in the partition according to hashCode, > using the same hashCode can easily cause hash collision. > Consider doing some mix to hashCode when choosing bucket. > Like JDK HashMap, we can just XOR some shifted bits in the cheapest possible > way to reduce systematic lossage, as well as to incorporate impact of the > highest bits that would otherwise never be used in index calculations because > of table bounds. (bucket use power-of-two masking). Just like: (hash ^ > (hash >>> 16)) -- This message was sent by Atlassian Jira (v8.3.4#803005)