【机器学习之一】python开发spark环境搭建

环境
  spark-1.6
  python3.5html

1、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

python开发spark,须要进行大量的进程间的通讯,若是通讯量过大,会出现“socket write error”错误,应尽可能少使用回收数据类算子,也能够调节回收日志的级别,下降进程之间的通讯。apache

2、搭建api

这里使用Spark1.6版本,因为Spark2.1如下版本不支持python3.6版本,因此咱们使用兼容性比较好的Python3.5版本。
步骤一:搭建python3.5环境架构

(1)conda info --env能够看到全部python环境,前面有个‘*’的表明当前环境eclipse

(2)建立Python3.5环境socket

conda create --name python35 python=3.5

建立成功以后:工具

(3)激活python35:oop

 

步骤二:安装spark开发工具

(1)下载spark-1.6.0-bin-hadoop2.6

官网下载:https://archive.apache.org/dist/spark/spark-1.6.3/


(2)解压到本地目录下,这里是:E:\workspace\spark-1.6.0-bin-hadoop2.6


(3)配置环境变量:SPARK_HOME

步骤三:安装py4j、pyspark
★py4j是一个用Python和Java编写的库。经过Py4J,Python程序可以动态访问Java虚拟机中的Java对象,Java程序也可以回调Python对象。
★pyspark是Spark为Python开发者提供的 API。

方式一:能够经过pip安装,可是默认安装最新版本,咱们这里须要的是和spark1.6相匹配的版本(不推荐)
安装:
pip install py4j
pip install pyspark
卸载:
pip uninstall py4j
pip uninstall pyspark

方式二:经过spark安装包拷贝(推荐)
进入目录:E:\workspace\spark-1.6.0-bin-hadoop2.6\python\lib,将py4j-0.9-src.zip、pyspark.zip解压后将py4j、pyspark拷贝到:D:\Anaconda3\envs\python35\Lib\site-packages

验证:导入包 不报错就OK

不然,会报错:

3、IDE搭建

一、eclipse

(1)eclipse中开发python程序,须要安装pydev插件。eclipse要求4.7以上,下载python插件包PyDev.zip(http://www.pydev.org/download.html),解压后加压拷贝到eclipse的dropins中,重启便可。
(2)配置python35解释器


(3)配置SPARK_HOME,设置环境变量,须要重启eclipse

不然报错:KeyError: 'SPARK_HOME'

(4)配置PYSPARK_PYTHON

若是使用的anaconda更换了python3.5.x版本,以后在开发工具中指定了python解析器为3.5.x版本以后,运行python spark 代码时spark默认的使用的python版本可能使环境变量中指定的版本。会致使与指定的python解析器的python版本不一致。这时须要在环境变量中指定下PYSPARK_PYTHON环境变量便可,值为指定的python3.5.x python解析器。


(5)配置控制台编码

eclipse控制台只支持GBK编码。运行时须要修改编码,运行python文件时,右键->Run As->Run Configurations->Common->Encoding 改成GBK

乱码:

�ɹ�: ����ֹ PID 940 (���� PID 2312 �ӽ���)�Ľ��̡�
�ɹ�: ����ֹ PID 2312 (���� PID 3992 �ӽ���)�Ľ��̡�
�ɹ�: ����ֹ PID 3992 (���� PID 5664 �ӽ���)�Ľ��̡�

设置:

修正后:

成功: 已终止 PID 5796 (属于 PID 6888 子进程)的进程。
成功: 已终止 PID 6888 (属于 PID 1836 子进程)的进程。
成功: 已终止 PID 1836 (属于 PID 2088 子进程)的进程。

(6)python开发spark设置外部依赖包

<1>本地测试能够经过Run As -> Run Configuration->Environment来设置SPARK_CLASSPATH 指定依赖的jar包:


<2>集群中提交任务,须要指定依赖的jar包,能够经过--jars或者—driver-class-path来指定依赖的jar包。也能够在集群spark中../conf/spark-defaults.conf中设置变量spark.driver.extraClassPath或者spark.executor.extraClassPath来指定pySpark依赖的jar包。
例如:若是使用python来开发SparkStreaming Application 还须要在进行以下配置:
在conf目录的spark-default.conf目录下添加两行配置信息

spark.driver.extraClassPath F:/spark-1.6.0-bin-hadoop2.6/lib/spark-streaming-kafka-assembly_2.10-1.6.0.jar
spark.executor.extraClassPath F:/spark-1.6.0-bin-hadoop2.6/lib/spark-streaming-kafka-assembly_2.10-1.6.0.jar

 

二、PyCharm
PyCharm2018破解:https://blog.csdn.net/u012278016/article/details/81738676

(1)建立新的python项目

(2)使用PyCharm建立python3.5环境
不一样的python项目,可能须要不一样的python版本
第一种:使用conda建立新环境

第二种:使用已有虚拟环境

第三种:使用已有其余的环境

(2)配置python对spark的依赖包

选中项目,而后选择点击File->Settings…->点击 Project:xxx:->Project Structure


(3)配置SPAKR_HOME,不然报错:KeyError: 'SPARK_HOME'

方式一:设置某个python文件运行变量

方式二:设置全部文件默认运行变量

方式三:配置系统环境变量SPAKR_HOME,设置后须要重启PyCharm


(4)配置PYSPARK_PYTHON
配置spark使用的python版本,不然有可能报错

 方式一:代码中设置

import os
os.environ["PYSPARK_PYTHON"] = "D:\\Anaconda3\\envs\\python35\\python.exe"

方式二:设置PyCharm运行变量

方式三:设置操做系统环境变量 须要重启PyCharm

(5)设置 python代码模板

File->Setting->File and Code Templates

PyCharm中的文件模版变量:

${PROJECT_NAME} - 当前的项目名  
${NAME} - 在文件建立过程当中,新文件对话框的命名  
${USER} - 当前的登陆用户  
${DATE} - 如今的系统日期  
${TIME} - 如今的系统时间  
${YEAR} - 当前年份  
${MONTH} - 当前月份  
${DAY} - 当前月份中的第几日  
${HOUR} - 如今的小时  
${MINUTE} - 如今的分钟  
${PRODUCT_NAME} - IDE建立文件的名称  
${MONTH_NAME_SHORT} - 月份的前三个字母缩写  
${MONTH_NAME_FULL} - 完整的月份名

 

 

 

注意:
jdk、Anaconda、python、Spark的安装路径中不能有空格和中文。

相关文章
相关标签/搜索