PyCharm+PySpark远程调试的环境配置的方法


Posted in Python onNovember 29, 2018

前言:前两天准备用 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中添加一行:

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

PyCharm+PySpark远程调试的环境配置的方法

添加spark-1.5.0/python目录

PyCharm+PySpark远程调试的环境配置的方法

新建一个Python文件Simple,编辑Edit Configurations添加SPARK_HOME变量

PyCharm+PySpark远程调试的环境配置的方法

写一个类似下面的简单测试程序

# -*- 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了~

PyCharm+PySpark远程调试的环境配置的方法

切记,1)本地与Spark集群的版本要一致;2)程序中不要用IP地址(不信可以试试,如果你用IP地址不报错,请告知我~谢谢)

以上这篇PyCharm+PySpark远程调试的环境配置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python httplib,smtplib使用方法
Sep 06 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
django自带的server 让外网主机访问方法
May 14 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
python实现滑雪游戏
Feb 22 Python
python递归函数用法详解
Oct 26 Python
python Cartopy的基础使用详解
Nov 01 Python
用 python 进行微信好友信息分析
Nov 28 Python
python飞机大战游戏实例讲解
Dec 04 Python
手把手教你配置JupyterLab 环境的实现
Feb 02 Python
详解Python魔法方法之描述符类
May 26 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 05 Python
利用Pycharm断点调试Python程序的方法
Nov 29 #Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 #Python
详解分布式任务队列Celery使用说明
Nov 29 #Python
Python正则表达式和元字符详解
Nov 29 #Python
Django中使用Celery的方法示例
Nov 29 #Python
记一次python 内存泄漏问题及解决过程
Nov 29 #Python
对python pandas 画移动平均线的方法详解
Nov 28 #Python
You might like
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
Python中return self的用法详解
2018/07/27 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
公司年会主持词
2014/03/22 职场文书
党课培训主持词
2014/04/01 职场文书
幼儿园辞职书
2015/02/26 职场文书
圣诞晚会主持词
2015/07/01 职场文书
初中政治教学工作总结
2015/08/13 职场文书
MySQL分区路径子分区再分区
2022/04/13 MySQL