我想知道是否有任何方法可以在运行时在Apache Flink中的一个操作员中的并行执行之间传输信息?我只需要发送一些消息。Flink中的广播变量不起作用,因为它无法在运行时广播。
,因为弗林克尚未支持广播和钥匙流到相同的功能(所谓的"侧输入支持"(,所以做你的事情变得有些棘手想要没有外部共享状态。但是我认为有可能,迭代。
例如。对于K均值,您将<point, centroid id>
作为元组,其中输入值的centroid ID为null。通过对输出<point, centroid id, distance>
的自定义flatmap进行分区。然后按点重新分配并找到最接近的质心。输出<point, centroid id>
,然后通过Centroid ID和过程使用自定义地图进行重新分配,以跟踪质心中心点。发射更新的<center point, centroid id>
,并将此迭代返回到顶部。
因此,第一个自定义flatmap需要以不同的方式处理真实点(带有无效的质心ID(和质心(Centroid Point,Centroid ID(,在此将其添加到其状态下,因此它可以计算任何实际点的距离接收。