Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在pythonshell中导入pyspark_Python_Apache Spark_Pyspark - Fatal编程技术网

在pythonshell中导入pyspark

在pythonshell中导入pyspark,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,这是另一个论坛上其他人的问题的副本,没有得到回答,所以我想我应该在这里重新提问,因为我有同样的问题。(见附件) 我已经在我的机器上正确安装了Spark,并且在使用./bin/pyspark作为我的python解释器时,能够使用pyspark模块运行python程序而不会出错 但是,当我尝试运行常规Python shell时,当我尝试导入pyspark模块时,会出现以下错误: from pyspark import SparkContext 上面写着 "No module named pyspa

这是另一个论坛上其他人的问题的副本,没有得到回答,所以我想我应该在这里重新提问,因为我有同样的问题。(见附件)

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

但是,当我尝试运行常规Python shell时,当我尝试导入pyspark模块时,会出现以下错误:

from pyspark import SparkContext
上面写着

"No module named pyspark".

我怎样才能解决这个问题?是否需要设置一个环境变量来将Python指向pyspark头文件/库文件等。?如果我的spark安装为/spark/,我需要包括哪些pyspark路径?或者pyspark程序只能从pyspark解释器运行吗?

结果表明pyspark容器正在加载python并自动加载正确的库路径。查看$SPARK_HOME/bin/pyspark:

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

我将这一行添加到我的.bashrc文件中,现在可以正确地找到模块了

如果打印此类错误:

ImportError:没有名为py4j.java_网关的模块

请将$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

在Mac上,我使用自制软件安装Spark(公式“apache Spark”)。然后,我以这种方式设置Python路径,以便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版本。

不要将py文件作为:
python filename.py运行。

改为使用:
spark submit filename.py

通过导出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
文件中,这里有一个简单的方法(如果您不关心它的工作原理!!!)

使用

  • 转到python shell

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

    from pyspark import SparkContext
    from pyspark import SparkConf
    
  • 完成


  • 我得到这个错误是因为我试图提交的python脚本名为pyspark.py(facepalm)。修复方法是按照上述建议设置PYTHONPATH,然后将脚本重命名为pyspark_test.py,并清理基于脚本原始名称创建的pyspark.pyc,该pyspark.pyc清除了此错误。

    对于DSE(DataStax Cassandra&Spark) 需要将以下位置添加到PYTHONPATH

    export PYTHONPATH=/usr/share/dse/resources/spark/python:$PYTHONPATH
    
    然后使用dse pyspark获取路径中的模块

    dse pyspark
    

    我也有同样的问题,我想在上面提出的解决方案中增加一点。在Mac OS X上使用自制软件安装Spark时,您需要更正py4j路径地址,以便在路径中包含libexec(记住将py4j版本更改为您现有的版本)


    要摆脱导入错误:没有名为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)
    

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


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

    对于Linux用户,以下是将pyspark库包含在PYTHONPATH中的正确(非硬编码)方法。两个路径部分都是必需的:

  • pyspark Python模块本身的路径,以及
  • pyspark模块导入时所依赖的压缩库的路径
  • 请注意,压缩后的库版本是动态确定的,因此我们不需要硬编码

    export PYTHONPATH=${SPARK_HOME}/python/:$(echo ${SPARK_HOME}/python/lib/py4j-*-src.zip):${PYTHONPATH}
    

    我正在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
    
    这就是我使用Spark的Anaconda分发版所做的。 这是独立于Spark版本的。 您可以将第一行更改为用户的python bin。 此外,自Spark 2.2.0起,PySpark在PyPi上作为独立软件包提供
    但是我还没有测试出来。

    我也有同样的问题

    还要确保您使用的是正确的python版本,并且安装的是正确的pip版本。在我的例子中:我同时拥有Python2.7和3.x。 我已经安装了pyspark

    pip2.7安装pyspark


    它起作用了。

    对于pyspark中的Spark执行,需要两个组件协同工作:

    • pyspark
      python包
    • JVM中的Spark实例
    使用spark submit或pyspark启动时,这些脚本将同时处理这两个问题,即它们设置PYTHONPATH、PATH等,以便脚本可以找到pyspark,并且它们还启动spark实例,根据您的参数进行配置,例如--master X

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

  • 确保pyspark包可以被Python解释器找到。如前所述,可以将spark/python目录添加到PYTHONPATH,也可以使用pip安装直接安装pyspark
  • 从脚本中设置spark实例的参数(那些过去传递给pyspark的参数)。
    • 对于通常使用--conf设置的spark配置,它们是通过SparkSession.builder.config中的配置对象(或字符串配置)定义的
    • 对于主要选项(如--master或--driver mem),您可以通过写入PYSPARK_SUBMIT_ARGS环境变量来设置它们。为了使事情更干净、更安全,您可以从Python本身中设置它,spark将在启动时读取它
  • 启动实例,只需要从生成器对象调用
    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())
    

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

    在我的例子中,它是在另一个python dist_pac上安装的
    export SPARK_HOME=/usr/lib/spark;
    export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
    
    export PYSPARK_PYTHON=/home/user/anaconda3/bin/python
    export PYSPARK_DRIVER_PYTHON=jupyter
    export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
    
    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())
    
    python -m pip install pyspark
    
    pip show pyspark