Jupyter pyspark:没有名为pyspark的模块

时间:2017-02-03 17:52:30

标签: python ipython pyspark jupyter apache-toree

谷歌确实充斥着这个问题的解决方案,但不幸的是,即使在尝试了所有可能性之后,我也无法让它发挥作用,所以请耐心等待,看看是否有什么东西袭击了你。

操作系统:MAC

Spark:1.6.3(2.10)

Jupyter Notebook:4.4.0

Python:2.7

斯卡拉:2.12.1

我能够成功安装和运行Jupyter笔记本。接下来,我尝试将其配置为使用Spark,我使用Apache Toree为其安装了spark解释器。现在,当我尝试在笔记本中运行任何RDD操作时,会抛出以下错误

Error from python worker:
  /usr/bin/python: No module named pyspark
PYTHONPATH was:
  /private/tmp/hadoop-xxxx/nm-local-dir/usercache/xxxx/filecache/33/spark-assembly-1.6.3-hadoop2.2.0.jar

事情已经尝试过: 1.在.bash_profile中设置PYTHONPATH 2.能够在本地导入python-cli中的'pyspark' 3.尝试将解释器kernel.json更新到以下

{
  "language": "python",
  "display_name": "Apache Toree - PySpark",
  "env": {
    "__TOREE_SPARK_OPTS__": "",
    "SPARK_HOME": "/Users/xxxx/Desktop/utils/spark",
    "__TOREE_OPTS__": "",
    "DEFAULT_INTERPRETER": "PySpark",
    "PYTHONPATH": "/Users/xxxx/Desktop/utils/spark/python:/Users/xxxx/Desktop/utils/spark/python/lib/py4j-0.9-src.zip:/Users/xxxx/Desktop/utils/spark/python/lib/pyspark.zip:/Users/xxxx/Desktop/utils/spark/bin",
  "PYSPARK_SUBMIT_ARGS": "--master local --conf spark.serializer=org.apache.spark.serializer.KryoSerializer",
    "PYTHON_EXEC": "python"
  },
  "argv": [
    "/usr/local/share/jupyter/kernels/apache_toree_pyspark/bin/run.sh",
    "--profile",
    "{connection_file}"
  ]
}
  1. 甚至更新了解释器run.sh以显式加载py4j-0.9-src.zip和pyspark.zip文件。当打开PySpark笔记本并创建SparkContext时,我可以看到从本地上传的spark-assembly,py4j和pyspark包,但是当调用某个动作时,仍然找不到pyspark。

6 个答案:

答案 0 :(得分:1)

使用findspark lib绕过所有环境设置过程。这是更多信息的链接。 https://github.com/minrk/findspark

使用如下。

import findspark
findspark.init('/path_to_spark/spark-x.x.x-bin-hadoopx.x')
from pyspark.sql import SparkSession

答案 1 :(得分:1)

只需要添加:

import os

os.environ['PYSPARK_SUBMIT_ARGS'] = 'pyspark-shell'

之后,您可以正常使用Pyspark。

答案 2 :(得分:0)

我在Windows中尝试了以下命令,以便在jupyter上链接pyspark。

在* nix上,使用export代替set

在CMD /命令提示符下键入以下代码

set PYSPARK_DRIVER_PYTHON=ipython
set PYSPARK_DRIVER_PYTHON_OPTS=notebook
pyspark

答案 3 :(得分:0)

使用:

  • ubuntu 16.04 lts
  • spark-2.2.0-bin-hadoop2.7
  • anaconda Anaconda3 4.4.0(python3)

将以下内容添加到.bashrc(相应地调整您的SPARK_HOME路径):

export SPARK_HOME=/home/gps/spark/spark-2.2.0-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

然后在终端窗口中运行(相应地调整路径):

$ /home/gps/spark/spark-2.2.0-bin-hadoop2.7/bin/pyspark 

这将启动启用了pyspark的Jupyter Notebook

答案 4 :(得分:0)

  1. 创建virtualenv并安装pyspark
  2. 然后设置kernal

     python -m ipykernel install --user --name your_venv_name --display-name "display_name_in_kernal_list"
    
  3. 启动笔记本

  4. 使用下拉列表更改内核

        Kernel >> Change Kernel >> list of kernels
    

答案 5 :(得分:0)

我们在拥有jupyter的路径中创建一个文件startjupyter.sh,并按上述方式在该文件中保留所有环境设置

export SPARK_HOME=/home/gps/spark/spark-2.2.0-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

提供错误路径,并在其中提供日志文件。 您还可以提供要在其中执行笔记本的端口号。 保存文件并执行./startjupyter.sh 检查Jupyter.err文件,它将提供令牌以通过url在线访问Jupyter笔记本。