Spark GraphX:如何从边列表加载折线图?

问题描述

我想从边列表中创建一个 Graph 对象,其中每条边都成为一个顶点,并且如果两条边共享一个端点(线图),则每个顶点都连接到另一个顶点。边缘保存在 .csv 文件中。例如 [1,2 \n 3,4 \n] 应该成为一个三节点图,其中 (1,2) 连接到 (3,2),而 (3,2) 也连接到 (3,4)。 这是我通常从边缘加载图形的代码

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.graphx._
import org.apache.spark.storage.StorageLevel
import org.apache.log4j.{Level,Logger}

def main(args: Array[String]) {

    val conf = new SparkConf().setAppName("project_3")
    val sc = new SparkContext(conf)

    val edges = sc.textFile(args(1)).map(line => {val x = line.split(","); Edge(x(0).toLong,x(1).toLong,1)} ).filter({case Edge(a,b,c) => a!=b})

    val g = Graph.fromEdges[Int,Int](edges,edgeStorageLevel = StorageLevel.MEMORY_AND_disK,vertexStorageLevel = StorageLevel.MEMORY_AND_disK)
}

args(1) 只是一个文件路径。我已经读到这可以在时间复杂度为 2 的开销下完成,但我不确定如何使用 GraphX 实现它。非常感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)