spark python 开发环境_pyspark学习笔记: 一些环境配置问题

本文详细介绍了如何配置Pyspark开发环境,包括设置SPARK_DIST_CLASSPATH以连接HDFS,修改环境变量如JAVA_HOME、HADOOP_HOME、SPARK_HOME和PYTHONPATH,解决Python版本不一致的问题,以及在PyCharm和Jupyter中使用Pyspark的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用pyspark一些环境配置问题

基本配置

cd /usr/local/spark

cp ./conf/spark-env.sh.template ./conf/spark-env.sh

编辑spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

有了上面的配置信息以后,Spark就可以把数据存储到Hadoop分布式文件系统HDFS中,也可以从HDFS中读取数据。

如果没有配置上面信息,Spark就只能读写本地数据,无法读写HDFS数据。

然后通过如下命令,修改环境变量

vim ~/.bashrc

在.bashrc文件中添加如下内容

export JAVA_HOME=/usr/lib/jvm/default-java

export HADOOP_HOME=/usr/local/hadoop

export SPARK_HOME=/usr/local/spark

export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH

export PYSPARK_PYTHON=python3

export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

PYTHONPATH环境变量主要是为了在Python3中引入pyspark库,PYSPARK_PYTHON变量主要是设置pyspark运行的python版本。

.bashrc中必须包含JAVA_HOME,HADOOP_HOME,SPARK_HOME,PYTHONPATH,PYSPARK_PYTHON,PATH这些环境变量。

如果已经设置了这些变量则不需要重新添加设置。

接着还需要让该环境变量生效,执行如下代码:

source ~/.bashrc

配置完成后就可以直接使用,不需要像Hadoop运行启动命令start-dfs.sh

直接在命令窗口输入pyspark进入spark的python交互式运行环境。

一些问题

如果在pycharm中运行代码失败,例如错误为

Python in worker has different version 2.7 than that in driver 3.5,

PySpark cannot run with different minor versions.

Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set

则需要在代码中加入运行环境

import os

#

os.environ["PYSPARK_PYTHON"] = '/usr/bin/python3'

或者直接修改环境变量,因为不能直接设置export PYSPARK_PYTHON=python3,

这样可能直接指向的是系统全局的设置,而不是当前用户的,所以不能像前边那样配置,需要设置成绝对路径。

export PYSPARK_PYTHON=/usr/bin/python3

另外,有时可能还需要分别设置driver和worker的python环境,通过下面设置下面两个变量:

driver对应的python版本就是SPARK_PYTHONPATH设置的

worker对应的python版本就是PYSPARK_PYTHON设置的

pycharm中使用pyspark

python安装py4j

pip install py4j

pycharm中配置python开发环境

其实只需要在代码中加入下面语句就可以了,这样就不用配置pycharm了,免得换一个IDE还是会出错

(主要原因还是因为系统的spark环境没配置好,如使用ssh远程登录时可能没执行spark配置的环境文件)。

如果报错:ImportError: No module named 'SocialNetworks’通过加入下面的代码就可以解决

SPARK_HOME = /home/piting/ENV/spark

PYSPARK_PYTHON = /home/piting/ENV/anaconda3/bin/python

SPARK_LOCAL_IP = 192.168.0.172

# spark environment settings

os.environ['SPARK_HOME'] = conf.get(SECTION, 'SPARK_HOME')

# Path for pyspark and py4j

sys.path.append(os.path.join(conf.get(SECTION, 'SPARK_HOME'), 'python'))

# sys.path.append("/home/piting/ENV/spark/python/lib/py4j-0.10.1-src.zip")

os.environ["PYSPARK_PYTHON"] = conf.get(SECTION, 'PYSPARK_PYTHON')

# You might need to enter your local IP

os.environ['SPARK_LOCAL_IP'] = conf.get(SECTION, 'SPARK_LOCAL_IP')

from pyspark import SparkContext

Jupyter配置

假设Spark已经配置正常,pyspark也可以正常在shell中使用了,只不过此时使用的python是系统预置的,

我们需要能够在jupyter notebook中实现pyspark程序编写,为此在当前用户的.bashrc或/etc/profile中增加配置

export PYSPARK_DRIVER_PYTHON=/webdev/app/anaconda3/bin/jupyter-notebook

export PYSPARK_DRIVER_PYTHON_OPTS=" --ip=0.0.0.0 --port=7777"

如此以来,在启动$SPARK_HOME/bin/pyspark时便可根据环境变量使用Anaconda的jupyter-notebook

注意以上export了PYSPARK_DRIVER_PYTHON与PYSPARK_DRIVER_PYTHON_OPTS两个环境变量后,非shell的pyspark 生怕认可应用也将使用者jupyter-notebook,这必然引起混乱,所以推荐的还是在pyspark的启动命令中当时指定。

如:

PYSPARK_DRIVER_PYTHON="jupyter" PYSPARK_DRIVER_PYTHON_OPTS="notebook" pyspark

或者再进行一些额外的配置来启动

PYSPARK_DRIVER_PYTHON=/webdev/app/anaconda3/bin/jupyter-notebook PYSPARK_DRIVER_PYTHON_OPTS=" --ip=0.0.0.0 --port=7777" pyspark --packages com.databricks:spark-csv_2.11:1.1.0 --master spark://spark_master_hostname:7077 --executor-memory 6400M --driver-memory 6400M

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值