PySpark环境搭建
配置hadoop
spark访问本地文件并执行运算时,可能会遇到权限问题或是dll错误。这是因为spark需要使用到Hadoop的winutils和hadoop.dll,首先我们必须配置好Hadoop相关的环境。可以到github下载:https://github.com/4ttty/winutils
gitcode提供了镜像加速:https://gitcode.net/mirrors/4ttty/winutils
我选择了使用这个仓库提供的最高的Hadoop版本3.0.0将其解压到D:\deploy\hadoop-3.0.0目录下,然后配置环境变量:
我们还需要将对应的hadoop.dll复制到系统中,用命令表达就是:
copy D:\deploy\hadoop-3.0.0\bin\hadoop.dll C:\Windows\System32
1
不过这步需要拥有管理员权限才可以操作。
为了能够在任何地方使用winutils命令工具,将%HADOOP_HOME%\bin目录加入环境变量中:
安装pyspark与Java
首先,我们安装spark当前(2022-2-17)的最新版本:
pip install pyspark==3.2.1
1
需要注意pyspark的版本决定了jdk的最高版本,例如假如安装2.4.5版本的pyspark就只能安装1.8版本的jdk,否则会报出java.lang.IllegalArgumentException: Unsupported class file major version 55的错误。
这是因为pyspark内置了Scala,而Scala是基于jvm的编程语言,Scala与jdk的版本存在兼容性问题,JDK与scala的版本兼容性表:
JDK version Minimum Scala versions Recommended Scala versions
17 2.13.6, 2.12.15 (forthcoming) 2.13.6, 2.12.15 (forthcoming)
16 2.13.5, 2.12.14 2.13.6, 2.12.14
13, 14, 15 2.13.2, 2.12.11 2.13.6, 2.12.14
12 2.13.1, 2.12.9 2.13.6, 2.12.14
11 2.13.0, 2.12.4, 2.11.12 2.13.6, 2.12.14, 2.11.12
8 2.13.0, 2.12.0, 2.11.0, 2.10.2 2.13.6, 2.12.14, 2.11.12, 2.10.7
6, 7 2.11.0, 2.10.0 2.11.12, 2.10.7
当前3.2.1版本的pyspark内置的Scala版本为2.12.15,意味着jdk17与其以下的所有版本都支持。
这里我依然选择安装jdk8的版本:
测试一下:
>java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
jdk11的详细安装教程(jdk1.8在官网只有安装包,无zip绿化压缩包):
绿化版Java11的环境配置与Python调用Java
https://xxmdmst.blog.csdn.net/article/details/118366166
graphframes安装
pip安装当前最新的graphframes:
pip install graphframes==0.6
1
然后在官网下载graphframes的jar包。
下载地址:https://spark-packages.org/package/graphframes/graphframes
由于安装的pyspark版本是3.2,所以这里我选择了这个jar包:
然后将该jar包放入pyspark安装目录的jars目录下:
pyspark安装位置可以通过pip查看:
C:\Users\ASUS>pip show pyspark
Name: pyspark
Version: 3.2.1
Summary: Apache Spark Python API
Home-page: https://github.com/apache/spark/tree/master/python
Author: Spark Developers
Author-email: dev@spark.apache.org
License: http://www.apache.org/licenses/LICENSE-2.0
Location: d:\miniconda3\lib\site-packages
Requires: py4j
Required-by:
|