7

我正在遵循安装指南,但使用时遇到以下问题graphframes

from pyspark import SparkContext
sc =SparkContext()
!pyspark --packages graphframes:graphframes:0.5.0-spark2.1-s_2.11
from graphframes import *

-------------------------------------------------- ------------------------- ImportError Traceback (最近一次调用最后一次) in () ----> 1 from graphframes import *

ImportError:没有名为 graphframes 的模块

我不确定是否可以通过以下方式安装软件包。但我会感谢你的建议和帮助。

4

4 回答 4

11

好问题!

打开你的 .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')

之后,您可以运行它。

于 2018-05-18T05:26:42.817 回答
5

我在docker中使用jupyter notebook,试图让graphframes工作。首先,我使用了https://stackoverflow.com/a/35762809/2202107中的方法,我有:

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())

然后通过关注这个问题,我们终于能够import 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 *
于 2019-03-02T02:13:53.323 回答
1

最简单的方法是使用 pyspark 启动 jupyter,而 graphframes 是从 pyspark 启动 jupyter。

只需打开终端并设置两个环境变量,然后从pysparkgraphframes 包开始

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可以使用相同的启动命令

于 2019-09-27T06:58:43.747 回答
0

我经历了漫长的痛苦之路,才找到了一个在这里有效的解决方案。

我正在使用 VS 代码中的本机 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 版本。我必须graphframes从分叉的 repo 安装正确的版本。PiPy 安装落后于版本,因此我不得不使用PHPiratesrepo 进行正确安装。在这里,graphframes 已经编译3.2.0pyspark.

pip install "git+https://github.com/PHPirates/graphframes.git@add-setup.py#egg=graphframes&subdirectory=python"
pip install pyspark==3.2.0
于 2021-11-30T14:53:01.690 回答