【发布时间】:2017-02-15 17:19:28
【问题描述】:
是否可以使用 spark 解决模拟问题? 例如: 我需要模拟一些有机体的生死过程。停止条件:(population = 0 || population > X) 例如,其中 X 为 1,000,000,000。
是否可以在某种条件下使用循环?如果“是”,实现此循环的最佳方法是什么。如果“否”是否有任何其他机制来提供停止条件?
现在我看到了几个解决这个问题的方法:
要控制停止条件,我可以使用:
- 蓄能器 // 安全吗?
- 调用organismRdd.size // 性能如何?
要模拟我可以使用的过程:
- flatMap 与有机体.nextEpoch() 调用返回有机体迭代器
- 我可以使用 forEach,但在这种情况下,我需要在 Organism 中实现一些逻辑,以将所有“子”节点保留在某个树之王中
JAVA伪代码示例:
Accumulator population = new Accumulator();
JavaRDD<Organism> organismRdd = ...// create RDD
while(population = 0 || population > X)
{
organismRdd = organismRdd.flatMap(organism -> organism.nextEpoch()) // return next epoch organisms iterator
// update population accumulator
}
【问题讨论】:
-
这绝对是可能的,但我认为 Spark 不是最好的工具。
-
这只是示例。真正的问题要复杂得多。一个虚拟机不足以在可接受的时间内解决这个问题。这就是我想使用 Spark 的原因。我想试试 spark cluster 来解决我的问题
标签: java loops apache-spark tree simulation