我有一个情况,有 8 个键(在 keyBy 上(,并且插槽上的分布是倾斜的。我的并行度为 3,键控操作的分布为 5,2 和 1,单个插槽上有 5 个键。有没有办法确保键控操作的分布是平衡的。(我们在键控流上没有分区操作(
keyBy()
假定分布均匀。通常,可以通过实现人工密钥来解决此问题。
在内部,Flink 调用obj.hashCode()
键,并用它(以及一些额外的逻辑(分发你的记录。您可以实现自己的KeySelector
来包装拧紧的钥匙,并实施更好的hashCode()
方法。