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