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代码来绘制彭罗斯点阵的教程
Apr 03 Python
python中requests模块的使用方法
Apr 08 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
Python循环实现n的全排列功能
Sep 16 Python
PageFactory设计模式基于python实现
Apr 14 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
Python中免验证跳转到内容页的实例代码
Oct 23 Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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中对数据库操作的封装
2006/10/09 PHP
php5新改动之短标记启用方法
2008/09/11 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
Django 中使用流响应处理视频的方法
2018/07/20 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
Django实现跨域的2种方法
2019/07/31 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
python中for in的用法详解
2020/04/17 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
成品仓管员工作职责
2013/12/29 职场文书
中学教师自我鉴定
2014/02/07 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
社区服务活动小结
2014/07/08 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
小学校本教研总结
2015/08/13 职场文书
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python