前言:前两天准备用 python 在 spark 上处理量几十g的数据,熟料在利用pycharm进行pyspark远程调试时掉入深坑,特写此博文以帮助同样深处坑中的bigdata&machine learning fans早日出坑。
version :spark 1.5.0、python 2.7.14
1. 远程spark集群环境
首先spark集群要配置好且能正常启动,版本号可以在spark对应版本的官方网站查到,注意:spark 1.5.0作为一个比较古老的版本,不支持python 3.6+;另外spark集群的每个节点的python版本必须保持一致。这里只讲如何加入pyspark远程调试所需要修改的部分。在$spark_home/conf/spark-env.sh中添加一行:
1
|
export pyspark_python = / home / hadoop / anaconda2 / bin / python2
|
这里的python路径是集群上python版本的路径,我这里是用的anaconda安装的python2,所以路路径如上。正常启动spark集群后,在命令行输入pyspark后回车,能正确进入到pyspark shell。
2. 本地pycharm配置
首先将spark集群的spark-1.5.0部署包拷贝到本地机器,并在/etc/hosts(linux类机器)或c:\windows\system32….\hosts(windows机器)中加入spark集群master节点的ip与主机名的映射;本地正确安装spark集群同版本python;
安装py4j
添加spark-1.5.0/python目录
新建一个python文件simple,编辑edit configurations添加spark_home变量
写一个类似下面的简单测试程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# -*- encoding: utf-8 -*-
# @auther:mars
# @datetime:2018-03-01
from pyspark import sparkcontext
sc = sparkcontext( "spark://master:7077" , "simple app" )
logdata = sc.textfile( "hdfs://master:9000/readme.md" ).cache()
numas = logdata. filter ( lambda s: 'a' in s).count()
numbs = logdata. filter ( lambda s: 'b' in s).count()
print ( "lines with a: %i, lines with b: %i" % (numas, numbs))
sc.stop()
|
运行可以得到看到下图,就ok了~
切记,1)本地与spark集群的版本要一致;2)程序中不要用ip地址(不信可以试试,如果你用ip地址不报错,请告知我~谢谢)
以上这篇pycharm+pyspark远程调试的环境配置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/mycafe_/article/details/79430320