【问题标题】:Cannot create graph in GraphX (Scala Spark)无法在 GraphX (Scala Spark) 中创建图形
【发布时间】:2018-09-28 18:55:10
【问题描述】:

我在 Spark GraphX 中创建简单图形时遇到了很大的问题。我真的什么都不懂,所以我尝试了我发现的所有东西,但没有任何效果。 例如,我尝试重现 here 的步骤。

以下两个没问题:

val flightsFromTo = df_1.select($"Origin",$"Dest")

val airportCodes = df_1.select($"Origin", $"Dest").flatMap(x => Iterable(x(0).toString, x(1).toString))

但在此之后我得到一个错误:

val airportVertices: RDD[(VertexId, String)] = airportCodes.distinct().map(x => (MurmurHash.stringHash(x), x))

错误:缺少参数类型

你能告诉我有什么问题吗?

顺便说一句,为什么是 MurmurHash?它的目的是什么?

【问题讨论】:

    标签: scala apache-spark graph


    【解决方案1】:

    我的猜测是,您正在使用最近的 Spark 版本学习 3 年的教程。 sqlContext 读取返回一个数据集而不是 RDD。 如果你想像教程一样使用 .rdd. 代替

    val airportVertices: RDD[(VertexId, String)] = airportCodes.rdd.distinct().map(x => (MurmurHash3.stringHash(x), x))
    

    或改变变量的类型

    val airportVertices: Dataset[(Int, String)] = airportCodes.distinct().map(x => (MurmurHash3.stringHash(x), x))
    

    如果您对 Graphs 和 Spark 感兴趣,也可以查看 https://graphframes.github.io/


    更新

    要创建图形,您需要顶点和边 为了使计算更容易,所有顶点都必须由 VertexId(本质上是 Long)来标识

    MurmerHash 用于创建非常好的唯一哈希。更多信息在这里:MurmurHash - what is it?

    散列是一种不偏斜分布数据的最佳做法,但没有技术原因不能为每个顶点使用增量计数器

    我看过教程,但是唯一你必须改变它才能让它工作,是添加.rdd

    val flightsFromTo = df_1.select($"Origin",$"Dest").rdd
    val airportCodes = df_1.select($"Origin", $"Dest").flatMap(x => Iterable(x(0).toString, x(1).toString)).rdd
    

    【讨论】:

    • 与您的回答一样准确,graphx 并没有太大变化,因为回到 RDD 并不总是一个坏主意。尽管如此,Graphframes 仍处于试验阶段。
    • 非常感谢,这有效。但是下一个命令不起作用: val flightEdges = flightFromTo.map(x =&gt; ((MurmurHash.stringHash(x(0).toString),MurmurHash.stringHash(x(1).toString)), 1) ).reduceByKey(<i>+</i>).map(x =&gt; Edge(x._1._1, x._1._2,x._2))
    • 错误是“值 ReduceByKey 不是 org.apache.spark.SQL.Dataset 的成员。”
    • 您可能应该使用 .rdd. 方法来继续使用 RDD,就像本教程的其余部分一样。
    • 这里我真的不明白 - 有这么复杂吗?我只想从一个简单的表格创建一个简单的图表。应该可以在没有 reduceByKey 和类似的东西的情况下做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2022-06-10
    相关资源
    最近更新 更多