在python shell中导入pyspark

python apache-spark pyspark

124883 观看

19回复

2366 作者的声誉

这是另一个从未回答过的论坛上的别人问题的副本,所以我想我会在这里重新提问,因为我有同样的问题。(见http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736

我在我的机器上正确安装了Spark,并且当使用./bin/pyspark作为我的python解释器时,能够使用pyspark模块运行python程序而不会出错。

但是,当我尝试运行常规Python shell时,当我尝试导入pyspark模块时,我收到此错误:

from pyspark import SparkContext

它说

"No module named pyspark".

我怎样才能解决这个问题?是否需要设置环境变量以将Python指向pyspark headers / libraries / etc. 如果我的火花安装是/ spark /,我需要包含哪些pyspark路径?或者pyspark程序只能从pyspark解释器运行?

作者: Glenn Strycker 的来源 发布者: 2014 年 4 月 23 日

回应 (19)


40

2366 作者的声誉

决定

原来pyspark bin是LOADING python并自动加载正确的库路径。查看$ SPARK_HOME / bin / pyspark:

# Add the PySpark classes to the Python path:
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH

我将此行添加到我的.bashrc文件中,现在可以正确找到模块!

作者: Glenn Strycker 发布者: 09.05.2014 02:51

46

596 作者的声誉

如果它打印出这样的错误:

ImportError:没有名为py4j.java_gateway的模块

请将$ SPARK_HOME / python / build添加到PYTHONPATH:

export SPARK_HOME=/Users/pzhang/apps/spark-1.1.0-bin-hadoop2.4
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH
作者: Peng Zhang 1516540 发布者: 05.12.2014 09:23

15

355 作者的声誉

在Mac上,我使用Homebrew来安装Spark(公式为“apache-spark”)。然后,我以这种方式设置PYTHONPATH,以便Python导入工作:

export SPARK_HOME=/usr/local/Cellar/apache-spark/1.2.0
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH

将“1.2.0”替换为mac上的实际apache-spark版本。

作者: jyu 发布者: 03.02.2015 05:29

19

224 作者的声誉

不要运行你的py文件:python filename.py 而是使用:spark-submit filename.py

作者: dodo 发布者: 22.10.2015 04:33

18

3375 作者的声誉

通过导出SPARK路径和Py4j路径,它开始工作:

export SPARK_HOME=/usr/local/Cellar/apache-spark/1.5.1
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH
PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH 
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH

因此,如果您不想在每次要启动Python shell时键入这些内容,您可能希望将其添加到您的.bashrc文件中

作者: Dawny33 发布者: 04.11.2015 04:22

79

2233 作者的声誉

这是一个简单的方法(如果你不打扰它如何工作!!!)

使用findspark

  1. 转到你的python shell

    pip install findspark
    
    import findspark
    findspark.init()
    
  2. 导入必要的模块

    from pyspark import SparkContext
    from pyspark import SparkConf
    
  3. 完成!

作者: Suresh2692 发布者: 13.01.2016 09:47

1

4900 作者的声誉

我收到此错误是因为我尝试提交的python脚本名为pyspark.py(facepalm)。解决方法是按照上面的建议设置我的PYTHONPATH,然后将脚本重命名为pyspark_test.py并清理根据我的脚本原始名称创建的pyspark.pyc并清除此错误。

作者: Patrick 发布者: 09.02.2016 02:42

1

181 作者的声誉

在DSE(DataStax Cassandra和Spark)的情况下,需要在PYTHONPATH中添加以下位置

export PYTHONPATH=/usr/share/dse/resources/spark/python:$PYTHONPATH

然后使用dse pyspark获取路径中的模块。

dse pyspark
作者: Sreesankar 发布者: 11.05.2016 03:05

1

1110 作者的声誉

我遇到了同样的问题,并且会对上面提出的解决方案添加一些内容。在Mac OS X上使用Homebrew安装Spark时,您需要更正py4j路径地址以在路径中包含libexec(记住将py4j版本更改为您拥有的版本);

PYTHONPATH=$SPARK_HOME/libexec/python/lib/py4j-0.9-src.zip:$PYTHONPATH
作者: tjb305 发布者: 05.06.2016 04:11

7

81 作者的声誉

要摆脱ImportError: No module named py4j.java_gateway,您需要添加以下行:

import os
import sys


os.environ['SPARK_HOME'] = "D:\python\spark-1.4.1-bin-hadoop2.4"


sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python")
sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python\lib\py4j-0.8.2.1-src.zip")

try:
    from pyspark import SparkContext
    from pyspark import SparkConf

    print ("success")

except ImportError as e:
    print ("error importing spark modules", e)
    sys.exit(1)
作者: Karang 发布者: 11.09.2016 11:23

5

964 作者的声誉

在Windows 10上,以下对我有用。我使用您的帐户的设置 > 编辑环境变量添加了以下环境变量:

SPARK_HOME=C:\Programming\spark-2.0.1-bin-hadoop2.7
PYTHONPATH=%SPARK_HOME%\python;%PYTHONPATH%

(将“C:\ Programming \ ...”更改为已安装spark的文件夹)

作者: JustAC0der 发布者: 08.11.2016 01:41

3

1861 作者的声誉

对于Linux用户,以下是在PYTHONPATH中包含pyspark libaray的正确(和非硬编码)方式。两个PATH部分都是必要的:

  1. pyspark Python模块本身的路径,以及
  2. 导入时pyspark模块依赖的压缩库的路径

请注意,压缩库版本是动态确定的,因此我们不对其进行硬编码。

export PYTHONPATH=${SPARK_HOME}/python/:$(echo ${SPARK_HOME}/python/lib/py4j-*-src.zip):${PYTHONPATH}
作者: NYCeyes 发布者: 30.03.2017 09:51

2

21 作者的声誉

我在CentOS VM上运行一个spark集群,它是从cloudera yum软件包安装的。

不得不设置以下变量来运行pyspark。

export SPARK_HOME=/usr/lib/spark;
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
作者: sujesh chirackkal 发布者: 24.04.2017 08:49

2

731 作者的声誉

export PYSPARK_PYTHON=/home/user/anaconda3/bin/python
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

这就是我使用Spark的Anaconda发行版所做的。这是Spark版本独立的。您可以将第一行更改为用户的python bin。此外,从Spark 2.2.0开始,PySpark可以作为PyPi上的独立包使用,但我还没有测试它。

作者: Yayati Sule 发布者: 02.08.2017 12:11

2

21 作者的声誉

我有同样的问题。

还要确保使用正确的python版本,并使用正确的pip版本进行安装。在我的情况下:我有python 2.7和3.x. 我安装了pyspark

pip2.7安装pyspark

它起作用了。

作者: etinika 发布者: 09.12.2017 11:04

12

327 作者的声誉

对于在pyspark中执行Spark,需要两个组件一起工作:

  • pyspark python包
  • JVM中的Spark实例

使用spark-submit或pyspark启动时,这些脚本将同时处理这两个脚本,即它们设置PYTHONPATH,PATH等,以便您的脚本可以找到pyspark,并且它们也会启动spark实例,根据您的参数进行配置,例如--master X.

或者,可以绕过这些脚本并直接在python解释器中运行你的spark应用程序python myscript.py。当spark脚本开始变得更复杂并最终获得自己的args时,这尤其有趣。

  1. 确保Python解释器可以找到pyspark包。如前所述,要么将spark / python目录添加到PYTHONPATH,要么使用pip install直接安装pyspark。
  2. 从脚本中设置spark实例的参数(那些曾经传递给pyspark的参数)。
    • 对于通常使用--conf设置的spark配置,它们在SparkSession.builder.config中使用配置对象(或字符串配置)定义
    • 对于主要选项(如--master或--driver-mem),您可以通过写入PYSPARK_SUBMIT_ARGS环境变量来设置它们。为了使事情更清洁,更安全,您可以在Python本身内设置它,并且spark将在启动时读取它。
  3. 启动实例,只需要您getOrCreate()从构建器对象调用。

因此,您的脚本可能具有以下内容:

from pyspark.sql import SparkSession

if __name__ == "__main__":
    if spark_main_opts:
        # Set main options, e.g. "--master local[4]"
        os.environ['PYSPARK_SUBMIT_ARGS'] = spark_main_opts + " pyspark-shell"

    # Set spark config
    spark = (SparkSession.builder
             .config("spark.checkpoint.compress", True)
             .config("spark.jars.packages", "graphframes:graphframes:0.5.0-spark2.1-s_2.11")
             .getOrCreate())
作者: F Pereira 发布者: 19.12.2017 11:45

1

11 作者的声誉

您还可以使用Alpine作为操作系统创建Docker容器,并将Python和Pyspark安装为软件包。这将使它全部集装箱化。

作者: Eddy 发布者: 09.11.2018 10:16

0

129 作者的声誉

在我的情况下,它是在不同的python dist_package(python 3.5)安装,而我使用python 3.6,所以下面的帮助:

python -m pip install pyspark
作者: D Untouchable 发布者: 14.06.2019 03:29

0

6 作者的声誉

您可以使用pip(如果已使用PIP安装)在python中获取pyspark路径,如下面的pip show pyspark。

作者: user3524049 发布者: 19.07.2019 08:34
32x32