GraphFrames с pySpark - PullRequest
       38

GraphFrames с pySpark

1 голос
/ 23 сентября 2019

Я хочу использовать GraphFrames с PySpark (в настоящее время используется Spark v2.3.3 в Google Dataproc).

После установки GraphFrames с

pip install graphframes

я пытаюсь запустить следующий код:

from graphframes import *

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

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

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

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

g = GraphFrame(v, e)

но я получаю эту ошибку:

Py4JJavaError: An error occurred while calling o301.loadClass.
: java.lang.ClassNotFoundException: org.graphframes.GraphFramePythonAPI
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
    at py4j.Gateway.invoke(Gateway.java:282)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.lang.Thread.run(Thread.java:748)

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Если вы используете Jupyter для разработки, запустите его из pyspark, а не напрямую или из Anaconda.То есть открыть терминал и затем запустить

export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS=notebook
pyspark --packages graphframes:graphframes:0.6.0-spark2.3-s_2.11

Это запустит Jupyter с правильными пакетами PySpark, загруженными в фоновом режиме.Если вы затем импортируете его в свой скрипт с from graphframes import, он правильно подберет его и запустит

1 голос
/ 24 сентября 2019

Чтобы использовать GraphFrames с Spark, вы должны установить его как пакет Spark , а не пакет PIP:

pyspark --packages graphframes:graphframes:0.7.0-spark2.3-s_2.11
...