今天想记录下如何在windows环境下远程提交代码到spark集群上面运行。
博客中提到的环境变量配置方法已经有更简单的方式可以替代。
使用findspark模块来达到自动配置环境变量的目的。
之后就可以在代码前端加入
import findspark findspark.init()
来实现自动配置。另外可以用init(edit_rc=True)来使配置持久化,但需要重新source并且重启spark才有效,不如手动配置。。不过如果spark的位置改变了可以用这个来重新配置。
spark集群搭建环境使Linux系统,但说实在,Linux系统因为是虚拟机的缘故运行IDE并不是很舒服,想要对python进行舒适的编程操作还不是一件容易事,所以今天记录下如何在Windows下进行spark编程。
首先是spark的基本安装。
需要按照集群方式安装,同时虚拟机需要保证能和Windows互联互通(能ping通),这样才能有最基本的环境。
具体操作按照教程按照集群版的的spark即可,注意的是slave文件内写上虚拟机地址或域名。如果成功安装将可以在Windows里显示如下界面。
成功安装完成后就是安装py4j。
Ubuntu环境下——
apt install pip3 pip3 install py4j
然后就是配置pycharm的Development。
首先我们需要配置PyCharm通服务器的代码同步,打开Tools | Deployment | Configuration
点击左边的“+”添加一个部署配置,输入名字,类型选SFTP
配置Connection。修改好host和用户名、密码就行,其余用默认配置。
配置Mapping。我选用默认配置,让上传同步的代码放在临时文件夹中。
测试连接成功后就可以了。配置完成会在下方控制台显示传输信息。
配置python虚拟环境
打开File | Settings | Project: untitled | Project Interpreter,右侧点击Add。
选择SHH。
选择已有环境。
选择虚拟机中的python环境。
点击Finish后等待pycharm同步即可。
配置项目环境变量
新建个py文件,右上角编辑启动配置。
修改环境变量。
添加如下配置。
PYTHONPATH=/usr/local/spark/python;SPARK_HOME =/usr/local/spark/;JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162;HADOOP_HOME=/usr/local/hadoop/
PYTHONPATH选择spark文件夹内的python文件夹,SPARK_HOME 选择spark文件夹,JAVA_HOME可选,HADOOP_HOME可选。
配置完成后基本就可以用了。简单测试。
from pyspark import SparkContext sc = SparkContext('spark://hadoop-master:7077', 'exp4') students = sc.textFile('file:///usr/local/spark/mycode/exp4/chapter5-data1.txt') qu1 = students.map(lambda line: (line.split(',')[0], 1)).reduceByKey(lambda a, b: a + b) print(qu1.collect()) qu2 = students.map(lambda line: (line.split(',')[1], 1)).reduceByKey(lambda a, b: a + b) print(qu2.collect())
完成。