gpt4 book ai didi

scala - 如何在 Spark Scala 中使用 Graph.fromEdgeTuples 从 CSV 文件创建图形

转载 作者:行者123 更新时间:2023-12-01 13:50:13 26 4
gpt4 key购买 nike

我是新来的 SparkScala ,我正在尝试执行一项简单的任务,即根据文本文件中的数据创建图形。

来自文档

https://spark.apache.org/docs/0.9.0/api/graphx/index.html#org.apache.spark.graphx.Graph$@fromEdges[VD,ED]%28RDD[Edge[ED]],VD%29%28ClassTag[VD],ClassTag[ED]%29:Graph[VD,ED]



我可以看到我可以从 tuples of vertices 创建一个图表.

我的简单文本文件如下所示,其中每个数字都是一个顶点:
v1 v3
v2 v1
v3 v4
v4
v5 v3

当我从文件中读取数据时

val myVertices = myData.map(line=>line.split(" ")) I get an RDD[Array[String]].



我的问题是:
  • 如果这是解决问题的正确方法,我该如何打开 RDD[Array[String]]转换成正确的格式,根据文档是 RDD[(VertexId, VertexId)] (还有 VertexID 必须是 long 类型,我正在处理字符串)
  • 是否有另一种更简单的方法可以从类似的 csv 文件结构中构建图形?

  • 任何建议都会非常受欢迎。谢谢!

    最佳答案

    您可以通过多种方式从文本文件创建图形。

    此代码从 创建一个图表Graph.fromEdgeTuples 方法

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    import org.apache.spark.graphx.GraphLoader
    import scala.util.MurmurHash
    import org.apache.spark.graphx.Graph
    import org.apache.spark.rdd.RDD
    import org.apache.spark.graphx.VertexId

    object GraphFromFile {
    def main(args: Array[String]) {

    //create SparkContext
    val sparkConf = new SparkConf().setAppName("GraphFromFile").setMaster("local[*]")
    val sc = new SparkContext(sparkConf)

    // read your file
    /*suppose your data is like
    v1 v3
    v2 v1
    v3 v4
    v4 v2
    v5 v3
    */
    val file = sc.textFile("src/main/resources/textFile1.csv");

    // create edge RDD of type RDD[(VertexId, VertexId)]
    val edgesRDD: RDD[(VertexId, VertexId)] = file.map(line => line.split(" "))
    .map(line =>
    (MurmurHash.stringHash(line(0).toString), MurmurHash.stringHash(line(1).toString)))

    // create a graph
    val graph = Graph.fromEdgeTuples(edgesRDD, 1)

    // you can see your graph
    graph.triplets.collect.foreach(println)

    }
    }

    MurmurHash.stringHash 使用是因为文件包含 String 形式的顶点。如果它是数字类型,则不需要它。

    关于scala - 如何在 Spark Scala 中使用 Graph.fromEdgeTuples 从 CSV 文件创建图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32396477/

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