Gle*_*ker 102 python apache-spark pyspark
这是另一个从未回答过的论坛上的别人问题的副本,所以我想我会在这里重新提问,因为我有同样的问题.(见http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736)
我在我的机器上正确安装了Spark,并且当使用./bin/pyspark作为我的python解释器时,能够使用pyspark模块运行python程序而不会出错.
但是,当我尝试运行常规Python shell时,当我尝试导入pyspark模块时,我收到此错误:
from pyspark import SparkContext
Run Code Online (Sandbox Code Playgroud)
它说
"No module named pyspark".
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?是否需要设置环境变量以将Python指向pyspark headers/libraries/etc. 如果我的火花安装是/ spark /,我需要包含哪些pyspark路径?或者pyspark程序只能从pyspark解释器运行?
小智 48
如果它打印出这样的错误:
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
Run Code Online (Sandbox Code Playgroud)
Gle*_*ker 43
原来pyspark bin是LOADING python并自动加载正确的库路径.查看$ SPARK_HOME/bin/pyspark:
# Add the PySpark classes to the Python path:
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
Run Code Online (Sandbox Code Playgroud)
我将此行添加到我的.bashrc文件中,现在可以正确找到模块!
Daw*_*y33 18
通过导出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
Run Code Online (Sandbox Code Playgroud)
因此,如果您不希望每次要启动Python shell时都键入这些内容,则可能需要将其添加到.bashrc
文件中
jyu*_*jyu 15
在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
Run Code Online (Sandbox Code Playgroud)
将"1.2.0"替换为mac上的实际apache-spark版本.
F P*_*ira 12
对于在pyspark中执行Spark,需要两个组件一起工作:
pyspark
python包使用spark-submit或pyspark启动时,这些脚本将同时处理这两个脚本,即它们设置PYTHONPATH,PATH等,以便您的脚本可以找到pyspark,并且它们也会启动spark实例,根据您的参数进行配置,例如--master X.
或者,可以绕过这些脚本并直接在python解释器中运行你的spark应用程序python myscript.py
.当spark脚本开始变得更复杂并最终获得自己的args时,这尤其有趣.
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())
Run Code Online (Sandbox Code Playgroud)
小智 7
要摆脱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)
Run Code Online (Sandbox Code Playgroud)
在Windows 10上,以下内容对我有用.我使用您的帐户的设置 > 编辑环境变量添加了以下环境变量:
SPARK_HOME=C:\Programming\spark-2.0.1-bin-hadoop2.7
PYTHONPATH=%SPARK_HOME%\python;%PYTHONPATH%
Run Code Online (Sandbox Code Playgroud)
(将"C:\ Programming\..."更改为已安装spark的文件夹)
对于 Linux 用户,以下是将 pyspark libaray 包含在 PYTHONPATH 中的正确(且非硬编码)方法。两个 PATH 部分都是必需的:
请注意,下面的压缩库版本是动态确定的,因此我们不会对其进行硬编码。
export PYTHONPATH=${SPARK_HOME}/python/:$(echo ${SPARK_HOME}/python/lib/py4j-*-src.zip):${PYTHONPATH}
Run Code Online (Sandbox Code Playgroud)
我在 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
135165 次 |
最近记录: |