gpt4 book ai didi

apache-spark - 使用HDFS在Spark Graphx中存储图形

转载 作者:行者123 更新时间:2023-12-04 04:42:56 25 4
gpt4 key购买 nike

我已经在Spark的GraphX中构造了一个图形。该图将具有潜在的10亿个节点和超过100亿个边,因此我不想一遍又一遍地构建此图。

我希望能够一次构建它,保存它(我认为最好是在HDFS中),在它上运行一些进程,然后在几天或几周内访问它,添加一些新的节点和边缘,然后运行一些更多的过程。

如何在Apache Spark的GraphX中做到这一点?

编辑:我认为我已经找到了一个潜在的解决方案,但我希望有人确认这是否是最好的方法。

如果我有一个图,例如graph,则必须通过其vertexRDD和edgeRDD将图分别存储在文本文件中。然后,稍后,我可以访问这些文本文件,如下所示:

graph.vertices.saveAsTextFile(somePath)
graph.edges.saveAsTextFile(somePath)

我现在有一个问题:我应该使用saveAsTextFile()还是saveAsObjectFile()吗?然后我该如何在以后访问这些文件?

最佳答案

GraphX尚无图形保存机制。因此,要做的第二件事是保存边和顶点,并从中构造图形。如果顶点本质上很复杂,则应使用序列文件保存它们。

 vertices.saveAsObjectFile("location/of/vertices")
edges.saveAsObjectFile("location/of/edges")

然后,您可以从磁盘读取并构建图形。
val vertices = sc.objectFile[T]("/location/of/vertices")
val edges = sc.objectFile[T]("/location/of/edges")
val graph = Graph(vertices, edges)

关于apache-spark - 使用HDFS在Spark Graphx中存储图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31802607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com