spark
spark包下载并解压后,进入解压的spark文件夹下的bin文件,并执行./spark-shell,若出现以下界面,则表示spark配置ok了。
spark环境配置
配置SPARK_HOME环境变量。
打开 ~/.bash_profile文件,配置SPARK_HOME以及PATH
export SPARK_HOME=/usr/local/spark/spark
PATH="${SPARK_HOME}/bin:${PATH}"
export PATH
配置好后,直接打开终端,输入spark-shell,若出现图一的界面,则表示环境变量配置OK。
pyspark 环境配置
pyspark 是spark提供的python环境的api,想要在python脚本中使用pyspark,则需要加载pyspark的配置信息。
- 本机环境配置
若在运行时报错此类错误:import-error:Unable to import 'pyspark'
,则一般是没有配置pythonpath的环境配置。
解决方法:
- 在配置文件中添加PYTHONPATH的路径。
打开~/.bash_profile 文件,配置PYTHONPATH
其中主要是添加${SPARK_HOME}/python/lib/py4j-0.10.7-src.zip和${SPARK_HOME}/python这两个python包路径。export SPARK_HOME=/usr/local/spark/spark PATH="${SPARK_HOME}/bin:${PATH}" PYTHONPATH="${SPARK_HOME}/python:${SPARK_HOME}/python/lib/py4j-0.10.7-src.zip" export PYTHONPATH
- 在脚本中动态加载
在脚本中通过sys.path进行动态设置pyspark的依赖包到python的path中。import os,sys spark_name = os.environ.get('SPARK_HOME', None) if not spark_name: raise ValueError('spark环境没有配置好') sys.path.insert(0, os.path.join(spark_name, 'python')) sys.path.insert(0, os.path.join(spark_name, 'python/lib/py4j-0.10.7-src.zip'))
- 集群环境配置
在yarn环境下运行脚本,若提示:
Caused by: org.apache.spark.SparkException: Error from python worker: /usr/bin/python: No module named pyspark
此类的错误,则一般是yarn集群的机器中未配置pyspark的环境配置,可以通过在脚本中添加依赖包的方式进行包上传,然后在脚本中添加环境配置的方式:
- 脚本中添加spark配置:
sparkSession.conf.set('spark.yarn.dist.files','file:/usr/local/spark/spark-2.4.5-bin-hadoop2.7/python/lib/pyspark.zip,file:/usr/local/spark/spark-2.4.5-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip')
- 脚本添加执行器的环境配置:
conf.setExecutorEnv('PYTHONPATH','pyspark.zip:py4j-0.10.7-src.zip')
其中spark.yarn.dist.files
表示yarn集群需要的资源文件,此命令会把本地的包路径(必须是绝对路径)下的文件打包上传到executor执行器中,第二个配置则为yarn集群中的executor机器配置pythonpath的环境配置,从而解决module not found的问题。