Windows环境下配置pyspark
相信许多朋友在配置环境的时候都遇到各种坑,这篇文章就系统的来描述一下spark-hadoop在python里运用时的相关配置流程。
工具准备
- python3.7
- jdk1.8
- spark-2.3.2-bin-hadoop2.7
- pyspark 2.3.2
刚开始配置环境的时候,我自己用的是Anaconda下3.8的python环境加上jdk14.0.2和pyspark 3.0
以至于在环境配置的时候总是出现一大堆错误而且应用互联网上的方法大都没结果,所以在配置环境前要保证版本的问题,这也是最主要的问题
链接自取
jdk:链接: https://pan.baidu.com/s/1EEFs1YfuLc14Wa3IDr-ZwQ 提取码: b5pg 复制这段内容后打开百度网盘手机App,操作更方便哦
spark:https://archive.apache.org/dist/spark/spark-2.3.2/spark-2.3.2-bin-hadoop2.7.tgz
pyspark:pip install --index-url https://mirrors.aliyun.com/pypi/simple/ pypandoc
pip install --index-url https://mirrors.aliyun.com/pypi/simple/ pyspark==2.3.2
环境配置
JAVA_HOME:jdk安装文件夹的根目录
SPARK_HOME:文件解压的根目录
PYSPARK_PYTHON:pip所安装的pyspark的环境下的python.exe文件
path:添加bin目录
测试环境
cmd:
- java
- javac
确定jdk是否配置正确
提醒:不需要测试spark-shell,就算报错了也没关系,我们只是在pycharm下测试就好了
test.py
from pyspark import SparkContext
sc = SparkContext("local")
rdd = sc.parallelize([1,2,3,4,5,6])
print(rdd.collect())
结果为:[1, 2, 3, 4, 5, 6] 就配置成功
错误排除
py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.
: org.apache.spark.SparkException: Job 0 cancelled because SparkContext was shut down
在这里这基本上就是jdk的版本问题,将jdk进行降级就好了
py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled does not exist in the JVM
这个错误是pyspark版本与spark-hadoop版本问题
解决方法:
- 将pyspark降级到与spark-hadoop相同版本;
如果在pyspark降级后重新安装低版本出现错误,可按照我上方的pyspark命令进行安装即可
- 在代码顶部加上
import findspark
findspark.init()
TypeError:an integer is required (got type bytes)?
这个问题在我看来就是python版本的问题,在之前的3.8中有出现
总结
pyspark在windows环境下的安装,最重要的就是版本兼容问题,只要将版本弄好,按正常流程下来是没问题的。