在Spark GraphX中,我使用graph.degrees.reduce( (a,b) => if (a._2 > b._2) a else b )
来获取名为LiveJournal [4,847,571个节点,68,993,773个边]的图中的最高度顶点。
我正在为我的图分析研究编写算法。我运行算法的LiveJournal图非常大,我的机器需要永远执行reduce阶段!所以我想知道是否有更高效,更省时的方法来获得上述相同的结果。
答案 0 :(得分:1)
在我的MacBook(8核)上运行不到一分钟。我需要允许4G驱动程序内存以本地模式运行。
我像这样启动spark-shell:
A B C ... W
AAA 1 2 3 ... 23
AAB 2 4 6 ...
.
.
.
ZZC 1700 1701 ... 1723
然后运行以下命令:
bin/spark-shell --driver-memory 4g
输出如下:
import org.apache.spark.graphx._
val graph = GraphLoader.edgeListFile(sc, "soc-LiveJournal1.txt")
val output = graph.degrees.reduce( (a,b) => if (a._2 > b._2) a else b
注意:这是使用Spark 1.6.1