为什么键控流(在keyBy上)创建倾斜的下游执行?

时间:2017-07-12 15:34:21

标签: apache-flink flink-streaming

我有一个案例,其中有8个键(在keyBy上)并且插槽上的传播是倾斜的。我有一个3的并行性,键控操作的传播是5,2和1,在一个插槽上有5个键。有没有办法确保键控操作的分配是平衡的。 (我们没有对键控流进行分区操作)

1 个答案:

答案 0 :(得分:0)

keyBy()采用统一分布。通常,这个问题可以通过实现人工密钥来解决。

在内部,Flink在您的密钥上调用obj.hashCode()并使用该密钥分发您的记录(以及一些额外的逻辑)。您可以实现自己的KeySelector包装您的密钥并实施更好的hashCode()方法。