parallel-processing - Flink 流式处理:事件是否根据它们的键分别分配到每个任务槽?
问题描述
因此,例如,如果我有事件与键 A 和事件与键 B 和并行度为 2。是否所有具有键 A 的事件都进入一个任务槽,而键 B 的事件进入另一个任务槽?
如果我只使用密钥 A 按顺序获取事件会发生什么。它们是否也被分配到两个任务槽。这是否意味着我失去了它们来的顺序?
解决方案
不,这不是它的工作原理。
发生的情况是每个键都映射到一个键组,其中键组的总数由集群的最大并行度(配置设置)决定。然后将键组映射到任务槽。如果有两个键和两个槽,则完全有可能将两个键分配到同一个槽。
密钥的密钥组是:
MathUtils.murmurHash(key.hashCode()) % maxParallelism
密钥组的插槽是:
keyGroup * actualParallelism / maxParallelism
至于维护排序,请参阅https://stackoverflow.com/a/69094404/2000823和https://stackoverflow.com/a/69757412/2000823。
推荐阅读
- reactjs - 如何解决 useEffect 中的依赖关系问题?
- python - 如何将pygame中的多个图像添加到网格上?
- google-cloud-platform - 运行 gcloud 命令时,我收到“错误:可达性检查失败”。
- c++ - 如何将 C++ 结构暴露给 QML?
- matlab - 如何自动确定图形改变斜率的位置,你可以拟合 -Matlab
- android - removeEventListener 不能在两个 Firebase 项目上的 Firebase 数据库上工作
- wordpress - 用户自定义页面
- javascript - 上下拖动行为
- python - 模块之间共享的 Python 多处理池
- node.js - 如何在没有每个人都下载证书颁发机构的情况下拥有安全的 https?