PySpark是Python整合Spark的一個(gè)擴(kuò)展包,可以使用Python進(jìn)行Spark開發(fā)躲因。而PySpark需要依賴Spark環(huán)境棘伴,Spark需要依賴Hadoop環(huán)境,而且摩骨,本地環(huán)境需要安裝JDK和Scala通贞。
一、環(huán)境準(zhǔn)備
- Scala環(huán)境搭建仿吞,本例環(huán)境為
2.11.8
- JDK環(huán)境搭建滑频,本例環(huán)境為
jdk1.8
- Python環(huán)境準(zhǔn)備,本例環(huán)境為
Anaconda
唤冈,版本為python 3.7
說明
- 本例中假設(shè)上述環(huán)境已經(jīng)搭建成功
- 本例中所有環(huán)境均搭建在本地峡迷,本例為
windows10
二、環(huán)境搭建
方案一
在本地搭建Hadoop+Spark+Python環(huán)境
1)Hadoop環(huán)境搭建
-
安裝包下載
官方下載地址:https://www.apache.org/dist/hadoop/common/選擇你需要的版本
hadoop-2.8.5
-
本地解壓
將下載好的包解壓到本地環(huán)境中你虹,比如/D:/Hadoop/hadoop-2.8.5/
-
添加環(huán)境變量
a.添加環(huán)境變量
HADOOP_HOME=解壓后路徑
绘搞,比如HADOOP_HOME=D:\Hadoop\hadoop-2.8.5
b.向
PATH
中添加追加HADOOP_HOME\bin
-
測試環(huán)境
命令行中輸入hadoop version
出現(xiàn)版本信息,表示搭建成功
-
本地bin目錄替換
因?yàn)閔adoop是搭建在linux集群上的傅物,搭建本地環(huán)境(windows)需要windows環(huán)境支持包夯辖,這里我們直接替換本地hadoop的bin文件夾。
下載地址:https://github.com/cdarlint/winutils董饰,下載對應(yīng)版本替換本地/bin
目錄
2)Spark環(huán)境搭建
-
安裝包下載
官方地址:https://archive.apache.org/dist/spark/蒿褂,選擇Spark版本以及對應(yīng)hadoop版本
spark-2.2.0-bin-hadoop2.7
-
本地解壓
解壓到本地環(huán)境中圆米,比如D:\Spark\spark-2.2.0-bin-hadoop2.7
-
添加環(huán)境變量
a. 添加環(huán)境變量
SPARK_HOME=解壓后的目錄
,比如SPARK_HOME=D:\Spark\spark-2.2.0-bin-hadoop2.7
b. 向PATH
追加SPARK_HOME\bin
-
測試環(huán)境
命令行中輸入spark-shell
出現(xiàn)
即表示搭建成功啄栓,
-
說明
如果出現(xiàn)類似缺少winutil
或者hivesession
等錯(cuò)誤娄帖,檢查hadoop\bin
文件夾是否替換成功,或者替換的版本是否一致昙楚。
3) pyspark環(huán)境整合
-
安裝包解壓
a. 復(fù)制spark安裝目錄\python\lib
中的py4j-0.10.4-src.zip
和pyspark.zip
包近速,如:
b. 粘貼包并解壓至Anaconda安裝目錄\Lib\site-package
下,如果沒有使用Anaconda堪旧,把Anaconda安裝目錄替換成Python安裝目錄削葱。如:
-
本地測試
在命令行輸入python
進(jìn)入python環(huán)境,輸入import pyspark as ps
不報(bào)錯(cuò)即表示成功
方案二
該方案與上述Spark環(huán)境搭建基本一致
- 直接從官網(wǎng)獲取完整的Pyspark包
- 解壓到本地環(huán)境中
- 配置環(huán)境變量
PYSPARK_HOME
淳梦,以及path
追加PYSPARK_HOME\bin
- 復(fù)制并解壓
pyspark解壓目錄\python\lib
中的py4j
和pyspark
包到Anaconda安裝目錄\Lib\site-package
中
結(jié)語
對于Python和Spark的整合析砸,雖然官方提供了相關(guān)包Pyspark,Pyspark是依賴Py4j包的谭跨。除此之外干厚,還需要基于一些已有的環(huán)境,整體完整的環(huán)境為JDK+Scala+Hadoop+Spark+Python以及常用的IDE螃宙,筆者這里使用的是PyCharm蛮瞄。