没有找到名为graphframes的模块 Jupyter Notebook

8
我正在遵循这个安装指南,但在使用graphframes时遇到了以下问题。
from pyspark import SparkContext
sc =SparkContext()
!pyspark --packages graphframes:graphframes:0.5.0-spark2.1-s_2.11
from graphframes import *

--------------------------------------------------------------------------- ImportError Traceback (most recent call last) in () ----> 1 from graphframes import *

ImportError: No module named graphframes

我不确定是否能够以以下方式安装包。 但我会感激您的建议和帮助。


这可能会有所帮助:https://community.hortonworks.com/questions/61386/graphframes-with-pyspark.html?childToView=61468#comment-61468 - PHA
看起来是个不错的解决方法。绝对值得一试,但我猜应该还有更通用的解决方案。 - Daniel Chepenko
scala> util.Properties.versionNumberString res0: 字符串 = 2.12.4 - Daniel Chepenko
4个回答

12

好问题!

打开您的bashrc文件,输入export SPARK_OPTS="--packages graphframes:graphframes:0.5.0-spark2.1-s_2.11"。保存bashrc文件后,关闭并输入source .bashrc

最后,打开笔记本并输入:

from pyspark import SparkContext
sc = SparkContext()
sc.addPyFile('/home/username/spark-2.3.0-bin-hadoop2.7/jars/graphframes-0.5.0-spark2.1-s_2.11.jar')

之后,你可能可以运行它。


5

我在docker中使用jupyter notebook,尝试让graphframes工作。首先,我使用了https://dev59.com/DlsV5IYBdhLWcg3w0hlU#35762809中的方法,我有以下代码:

import findspark
findspark.init()
import pyspark
import os

SUBMIT_ARGS = "--packages graphframes:graphframes:0.7.0-spark2.4-s_2.11 pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = SUBMIT_ARGS

conf = pyspark.SparkConf()
sc = pyspark.SparkContext(conf=conf)
print(sc._conf.getAll())

然后通过关注这个问题,我们最终可以导入graphframeshttps://github.com/graphframes/graphframes/issues/172

import sys
pyfiles = str(sc.getConf().get(u'spark.submit.pyFiles')).split(',')
sys.path.extend(pyfiles)
from graphframes import *

这比@Pranav A的答案更好,因为我不需要手动调整路径。 - Sida Zhou
谢谢!这对我有用——有人能帮我理解这里的命令是如何使其工作的吗? - ednaMode

2

最简单的使用pyspark和graphframes启动jupyter的方法是从pyspark开始启动jupyter。

只需打开终端并设置两个环境变量,然后使用graphframes包启动pyspark即可。

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

这样做的好处是,如果你以后想通过spark-submit运行你的代码,你可以使用相同的启动命令。


0

我经历了漫长而痛苦的道路才找到了一个在这里起作用的解决方案。

我正在使用VS Code中的本地jupyter服务器。在那里,我创建了一个.env文件:

SPARK_HOME=/home/adam/projects/graph-algorithms-book/spark-3.2.0-bin-hadoop3.2
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
PYSPARK_SUBMIT_ARGS="--driver-memory 2g --executor-memory 6g --packages graphframes:graphframes:0.8.2-spark3.2-s_2.12 pyspark-shell"

然后在我的 Python 笔记本中,我有类似以下的代码:

from pyspark.sql.types import *
from graphframes import *

from pyspark.sql.session import SparkSession
spark = SparkSession.builder.appName('GraphFrames').getOrCreate()

你应该查看代码并相应地打印出和获取依赖项。就像这样:
:: loading settings :: url = jar:file:/home/adam/projects/graph-algorithms-book/spark-3.2.0-bin-hadoop3.2/jars/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
Ivy Default Cache set to: /home/adam/.ivy2/cache
The jars for the packages stored in: /home/adam/.ivy2/jars
graphframes#graphframes added as a dependency
:: resolving dependencies :: org.apache.spark#spark-submit-parent-96a3a1f1-4ea4-4433-856b-042d0269ec1a;1.0
    confs: [default]
    found graphframes#graphframes;0.8.2-spark3.2-s_2.12 in spark-packages
    found org.slf4j#slf4j-api;1.7.16 in central
:: resolution report :: resolve 174ms :: artifacts dl 8ms
    :: modules in use:
    graphframes#graphframes;0.8.2-spark3.2-s_2.12 from spark-packages in [default]
    org.slf4j#slf4j-api;1.7.16 from central in [default]
    ---------------------------------------------------------------------
    |                  |            modules            ||   artifacts   |
    |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
    ---------------------------------------------------------------------
    |      default     |   2   |   0   |   0   |   0   ||   2   |   0   |
    ---------------------------------------------------------------------

之后,我能够使用关系创建一些代码:

v = spark.createDataFrame([
  ("a", "Alice", 34),
  ("b", "Bob", 36),
  ("c", "Charlie", 30),
], ["id", "name", "age"])

它应该可以正常工作。只需记住对齐所有的pyspark版本。我不得不从一个fork的repo安装适当版本的graphframes。PiPy安装版本滞后,所以我必须使用PHPirates repo 来进行正确的安装。这里的graphframes已经编译为pyspark3.2.0版本。

pip install "git+https://github.com/PHPirates/graphframes.git@add-setup.py#egg=graphframes&subdirectory=python"
pip install pyspark==3.2.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接