Jupyter导入graphframes提示找不到模块,已通过pyspark--packages成功安装
解决Jupyter Notebook中导入graphframes失败的问题
我之前也碰到过一模一样的坑!你用pyspark --packages安装的graphframes其实是加到了Spark的运行依赖体系里,但Jupyter默认的Python环境并不会自动关联这些Spark专属的包——直接复制文件夹到site-packages肯定没用,因为graphframes本质是基于Scala编写的Spark扩展包,Python部分只是个轻量的包装层,必须让SparkSession加载对应的JAR文件才能正常工作。
下面给你几个靠谱的解决办法:
方法一:在Jupyter里初始化SparkSession时指定依赖
这是最直接的方式,每次在Jupyter里启动Spark时,手动把graphframes的包参数加上:
from pyspark.sql import SparkSession # 初始化SparkSession时配置packages spark = SparkSession.builder \ .appName("GraphFramesDemo") \ .config("spark.jars.packages", "graphframes:graphframes:0.5.0-spark2.1-s_2.11") \ .getOrCreate() # 现在就能正常导入了 from graphframes import GraphFrame
第一次运行时Spark会自动调用本地已缓存的包(就是你之前下载好的),之后再启动就会直接复用缓存。
方法二:修改Spark默认配置,永久加载依赖
如果不想每次都写配置,可以修改Spark的全局配置文件,一劳永逸:
- 找到你的Spark安装目录下的
conf文件夹(一般路径是$SPARK_HOME/conf) - 创建或编辑
spark-defaults.conf文件,添加一行:
spark.jars.packages graphframes:graphframes:0.5.0-spark2.1-s_2.11
- 保存后,不管是用
pyspark命令还是在Jupyter里启动SparkSession,都会自动加载这个依赖包。
方法三:带着依赖参数启动Jupyter
直接用pyspark命令带着--packages参数启动Jupyter,这样整个Jupyter环境都会绑定带有graphframes依赖的Spark:
pyspark --packages graphframes:graphframes:0.5.0-spark2.1-s_2.11 --no-browser --port=8888
执行完后会输出Jupyter的访问链接,打开后就能正常导入graphframes了。
再提醒一句:别再尝试复制文件夹到site-packages啦,graphframes不是普通的Python包,它的核心逻辑在JAR文件里,必须让Spark去加载这些JAR才能生效~
内容的提问来源于stack exchange,提问作者Also
相关产品推荐
相关产品推荐

