多个DataSet上的Apache Flink迭代

时间:2017-10-06 16:49:16

标签: java redis distributed apache-flink

我在为我的硕士论文实施flink批处理工作时遇到了麻烦,如果你能帮助我,我会很高兴。

要求: 虽然双重数据集在迭代中不断缩小,但有两个整数值,可以在运行时间内更改。据我所知,flink不为多个数据集提供迭代,仅针对一个数据集。所以这是一个需要解决的问题。

我的解决方案:

  1. 拥有DataSet<Tuple3<Double, Integer, Integer>>,其中包含Double值本身以及每个Double值的两个整数值。

  2. 拥有两个整数的分布式键值存储,可以在Rich函数的open()和close()方法中读取和写入。

  3. 问题:

    1. 这需要大量的RAM,因为对于每个Double值,我必须存储两个额外的Integer值。此外,这不是一个很好的解决方案,因为我实际上只需要其中一个而不是每个double的单个值。

    2. 存在一个大问题:我遇到了竞争条件,因为我不知道如何使用&#34;屏障同步&#34;,意思是,我想要更新仅当此迭代(和所有线程)的所有步骤都已完成时的值。但我无法完成它。无论我是否使用终止标准进行更新或在其他地方进行更新,我仍然遇到竞争条件。

    3. 也许,你们中的一些人遇到了同样的问题或为我找到了解决方案。先感谢您!如果你想看一些代码,请告诉我!

      来自德国莱比锡的亲切问候!

0 个答案:

没有答案