irpas技术客

Windows 安装配置 PySpark 开发环境(详细步骤+原理分析)_bboy枫亭_配置pyspark环境

irpas 3392

文章目录 1.Python开发Spark的环境配置详细步骤1.1 Windows 配置 python 环境变量1.2 Windows 配置 spark 环境变量1.3 Python中安装py4j1.4 Python中安装PySpark模块WordCount 测试环境是否配置成功 2. Python 开发 Spark原理

1.Python开发Spark的环境配置详细步骤 1.1 Windows 配置 python 环境变量

这个比较简单,安装原生的 Python 或者 Anaconda 都可以,至于步骤这里就不多说了。

我这里用的Anaconda3,至于Anaconda3的安装配置,有兴趣的话可以参考:这篇blog

注意:如果使用的是 anaconda 安装的 python环境 并且打算学习 spark1.6 版本的开发,建议安装python3.5.x 版本,这个版本和 spark1.6 兼容

1.2 Windows 配置 spark 环境变量

我这里用的Spark版本 spark-2.3.1-bin-hadoop2.6.tgz

1. 解压并配置SPARK_HOME

1.3 Python中安装py4j

在 python 环境中安装 py4j 模块(python 调用 java API 的中间通信模块)

两种方式,我这里用的第(2)种

(1)进入python安装目录\Scripts使用pip install py4j

(2)或者将解压的spark安装包中的D:\spark-2.3.1-bin-hadoop2.6\python\lib\py4j拷贝到D:\ProgramData\Anaconda3\Lib\site-packages中。

验证py4j是否安装成功:python >>>import py4j回车

1.4 Python中安装PySpark模块

同样也是那两种方法

(1)使用pip安装pyspark。pip install pyspark 会安装最新的版本的pyspark。

(2)或者,将解压的spark安装包中的D:\spark-2.3.1-bin-hadoop2.6\python\pyspark拷贝到D:\ProgramData\Anaconda3\Lib\site-packages中

验证pyspark模块是否安装成功

如果启动遇到下面错误: ERROR Shell:396 - Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 说明你的电脑没有配置 hadoop ,解决办法可以参考:这篇博客

WordCount 测试环境是否配置成功

先来个WordCount试试(我这里用的 PyCharm)

(1)新建一个 txt 文件

(2)运行下面示例代码

#coding:utf-8 from pyspark import SparkConf from pyspark import SparkContext if __name__ == '__main__': conf=SparkConf() conf=conf.setAppName("wordcount").setMaster("local") sc=SparkContext(conf=conf) lines=sc.textFile("word.txt",2) print("lines rdd partition length = %d"%(lines.getNumPartitions())) result=lines.flatMap(lambda line:line.split(" ")).map(lambda word:(word,1)).reduceByKey(lambda v1,v2:v1+v2,3) print("result rdd partition length = %d"%(lines.getNumPartitions())) result.foreach(lambda x:print(x)) result.saveAsTextFile("result")

运行结果如下: 说明配置的完全没毛病。

2. Python 开发 Spark原理

使用 python api 编写 pyspark 代码提交运行时,为了不破坏 spark 原有的运行架构,会将写好的代码首先在 python 解析器中运行(cpython),Spark 代码归根结底是运行在 JVM 中的,这里 python 借助 Py4j 实现 Python 和 Java 的交互,即通过 Py4j 将 pyspark 代码“解析”到 JVM 中去运行。例如,在 pyspark 代码中实例化一个 SparkContext 对象,那么通过 py4j 最终在 JVM 中会创建 scala 的 SparkContext 对象及后期对象的调用、在 JVM 中数据处理消息的日志会返回到 python 进程中、如果在代码中会回收大量结果数据到 Driver 端中,也会通过 socket 通信返回到 python 进程中。这样在python进程和JVM进程之间就有大量通信。

python开发spark,需要进行大量的进程间的通信,如果通信量过大,会出现“socket write error”错误。因此,应尽量少使用回收数据类算子,也可以调节回收日志的级别,降低进程之间的通信。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #配置pyspark环境 #Windows #配置 #Python #环境变量12