我有一个案例,其中有8个键(在keyBy上),并且插槽上的传播是倾斜的 . 我有一个3的并行性,键控操作的传播是5,2和1,单个插槽上有5个键 . 有没有办法确保键控操作的分配是 balancer 的 . (我们没有对键控流进行分区操作)
keyBy() 假定均匀分布 . 通常,这个问题可以通过实现人工密钥来解决 .
keyBy()
在内部,Flink在您的密钥上调用 obj.hashCode() 并使用该密钥分发您的记录(以及一些额外的逻辑) . 您可以实现自己的 KeySelector 包装您的拧紧键并实现更好的 hashCode() 方法 .
obj.hashCode()
KeySelector
hashCode()
1 回答
keyBy()
假定均匀分布 . 通常,这个问题可以通过实现人工密钥来解决 .在内部,Flink在您的密钥上调用
obj.hashCode()
并使用该密钥分发您的记录(以及一些额外的逻辑) . 您可以实现自己的KeySelector
包装您的拧紧键并实现更好的hashCode()
方法 .