我在为我的硕士论文实施flink批处理工作时遇到了麻烦,如果你能帮助我,我会很高兴。
要求: 虽然双重数据集在迭代中不断缩小,但有两个整数值,可以在运行时间内更改。据我所知,flink不为多个数据集提供迭代,仅针对一个数据集。所以这是一个需要解决的问题。
我的解决方案:
拥有DataSet<Tuple3<Double, Integer, Integer>>
,其中包含Double值本身以及每个Double值的两个整数值。
拥有两个整数的分布式键值存储,可以在Rich函数的open()和close()方法中读取和写入。
问题:
这需要大量的RAM,因为对于每个Double值,我必须存储两个额外的Integer值。此外,这不是一个很好的解决方案,因为我实际上只需要其中一个而不是每个double的单个值。
存在一个大问题:我遇到了竞争条件,因为我不知道如何使用&#34;屏障同步&#34;,意思是,我想要更新仅当此迭代(和所有线程)的所有步骤都已完成时的值。但我无法完成它。无论我是否使用终止标准进行更新或在其他地方进行更新,我仍然遇到竞争条件。
也许,你们中的一些人遇到了同样的问题或为我找到了解决方案。先感谢您!如果你想看一些代码,请告诉我!
来自德国莱比锡的亲切问候!