【问题标题】:How to construct graph in graphx如何在graphx中构建图形
【发布时间】:2014-12-08 14:07:54
【问题描述】:

我是 scala 和 graphx 的新手,在将 tsv 文件转换为图形时遇到问题。 我有一个平面制表符分隔的文件,如下所示:

n1 P1 n2 n3 P1 n4 n2 P2 n3 n3 P2 n1 n1 P3 n4 n3 P3 n2

其中 n1,n2,n3,n4 是图的节点,R1,P2,P3 是应形成节点之间边的属性。

如何在 SPARK GraphX 中从上述文件构建图形? 示例代码会很有帮助。

【问题讨论】:

    标签: scala graph apache-spark scala-collections scala-2.10


    【解决方案1】:

    有一些代码供你使用(当然你应该使用 sbt 在 jar 文件中构建它):

    package vinnie.pooh
    
    import org.apache.spark.SparkContext._
    import org.apache.spark._
    import org.apache.spark.graphx._
    import org.apache.spark.rdd.RDD
    
    
    object Main {
      def main(args: Array[String]) {
    
        if (args.length != 1) {
          System.err.println(
            "Should be one parameter: <path/to/edges>")
          System.exit(1)
        }
    
        val conf = new SparkConf()
          .setAppName("Load graph")
          .setSparkHome(System.getenv("SPARK_HOME"))
          .setJars(SparkContext.jarOfClass(this.getClass).toList)
    
        val sc = new SparkContext(conf)
    
        val edges: RDD[Edge[String]] =
          sc.textFile(args(0)).map { line =>
            val fields = line.split(" ")
            Edge(fields(0).toLong, fields(2).toLong, fields(1))
          }
    
        val graph : Graph[Any, String] = Graph.fromEdges(edges, "defaultProperty")
    
    
        println("num edges = " + graph.numEdges);
        println("num vertices = " + graph.numVertices);
      }
    }
    

    我有 edge.txt:

    1 Prop12 2
    2 Prop24 4
    4 Prop45 5
    5 Prop52 2
    6 Prop65 7
    

    然后,例如,您可以在本地启动它:

    $SPARK_HOME>./bin/spark-submit --class vinnie.pooh.Main --master local[2] ~/justBuiltJar.jar ~/edge.txt

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      相关资源
      最近更新 更多