在pythonshell中导入pyspark
这是另一个论坛上其他人的问题的副本,没有得到回答,所以我想我应该在这里重新提问,因为我有同样的问题。(见附件) 我已经在我的机器上正确安装了Spark,并且在使用./bin/pyspark作为我的python解释器时,能够使用pyspark模块运行python程序而不会出错 但是,当我尝试运行常规Python shell时,当我尝试导入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
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
文件中,这里有一个简单的方法(如果您不关心它的工作原理!!!)
使用
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中的正确(非硬编码)方法。两个路径部分都是必需的:
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执行,需要两个组件协同工作:
python包pyspark
- JVM中的Spark实例
python myscript.py
。当spark脚本开始变得更加复杂并最终接收到自己的参数时,这一点尤其有趣
- 对于通常使用--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