pySpark v3.0.1 的图形框架

问题描述

我正在尝试将 graphframes 库与 pySpark v3.0.1 一起使用。 (我在 debian 上使用 vscode,但尝试从 pyspark shell 导入包也没有用)

根据documentation,使用$ pyspark --packages graphframes:graphframes:0.6.0-spark2.3-s_2.11我应该可以使用它。

此示例代码取自 StackOverflow 中另一个提出相同问题的 post,尽管它的解决方案对我没有帮助。

localVertices = [(1,"A"),(2,"B"),(3,"C")]

localEdges = [(1,2,"love"),1,"hate"),3,"follow")]

v = sqlContext.createDataFrame(localVertices,["id","name"])

e = sqlContext.createDataFrame(localEdges,["src","dst","action"])

g = GraphFrame(v,e)

抛出错误

py4j.protocol.Py4JJavaError: An error occurred while calling o63.createGraph.

java.lang.NoSuchMethodError: 'scala.collection.mutable.ArrayOps scala.Predef$.refArrayOps(java.lang.Object[])'

解决方法

您需要为 Spark 3.0 使用正确的图形框架版本。您使用了 Spark 2.3 (0.6.0-spark2.3-s_2.11) 的图形框架,这导致了 Spark 版本冲突。您可以尝试 0.8.1-spark3.0-s_2.12,这是目前 Spark 3.0 最新版本的图形框架。

pyspark --packages graphframes:graphframes:0.8.1-spark3.0-s_2.12