我正在使用
每次
我试图找到一种有效的更新
因此,我在思考是否有办法以
另外一个问题是,如果我能够实现
Scala
和 Spark
编写一个与图相关的程序。数据集有 400 万个节点和 400 万条边(您可以将其视为一棵树),但每次迭代,我只编辑其中的一部分,即以给定节点为根的子树以及该给定节点和根之间路径上的节点。每次
Iteration
之间有依赖关系,也就是说,i+1
Iteration
需要来自 i
的结果。因此,我需要存储每个 Iteration
的结果以进行下一步操作。我试图找到一种有效的更新
RDD
的方法,但目前还没有头绪。我发现 PairRDD
有一个 lookup
函数,它可以将计算时间从 O(N)
减少到 O(M
),其中 N
表示 RDD
中对象的总数,M
表示每个分区中元素的数量。因此,我在思考是否有办法以
O(M)
或更理想的 O(1)
更新 RDD
中的对象?(我在 Spark 的邮件列表中看到有人说可以修改 lookup
以实现 O(1))另外一个问题是,如果我能够实现
O(M)
更新 RDD
,那么我是否可以将分区数增加到大于我拥有的 CPU 核心数量,并实现更好的性能表现?