我在为我的硕士论文实施Flink批处理工作有困难,如果你能帮助我,我会很高兴的。
要求:当有一个在迭代中不断缩小的双精度数据集时,有两个整数值,可以在运行时改变。据我所知,flink不为多个数据集提供迭代,只为一个数据集提供迭代。所以这是一个需要解决的问题。
我的解决方案:
有一个 DataSet<Tuple3<Double, Integer, Integer>>
它保存双精度值本身和每个双精度值的两个整数值。
为两个整数存储分布式键值,在富函数的open()和close()方法中读写。
问题:
这需要大量的ram,因为对于每个双精度值,我必须存储两个额外的整数值。而且,这不是一个好的解决方案,因为我实际上只需要其中一个,而不是每个double都需要一个值。
有一个大问题:我遇到了竞争条件,因为我不知道如何使用“屏障同步”,这意味着,我只想在这个迭代的所有步骤(和所有线程)都完成时更新这些值。但我做不到。不管我是使用终止条件进行更新还是在其他地方进行更新,我仍然在经历竞争条件。
也许,你们中的一些人也经历过同样的问题,或者有一个解决方案给我。提前谢谢!如果你想看看密码,就告诉我!
来自德国莱比锡的亲切问候!
暂无答案!
目前还没有任何答案,快来回答吧!