pySaprk,pycharm编写spark的python脚本,远程上传执行和本地模式执行

本文介绍使用Python编写Spark脚本,重点讲解用PyCharm编写代码,包括本地开发远程上传到Linux配置和在PyCharm或IDEA中调试两种方法。本地开发需解压Spark安装包并配置PyCharm,远程上传后要在Linux主机配置环境变量;调试关键是用远程解释器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次,我们用scala来编写来spark,这次我们用python来写spark脚本,我们在上篇博客中说过,spark的版本是2.2.0,scala的版本是2.1.x,这样我们在集群中,由于spark的版本,没有办法使用pySpark wordcount.py 来执行脚本,只能使用spark submit wordcount.py来执行脚本,在Linux环境是这样执行的,但是我们写脚本,可以直接在Linux上vim,也可以使用pyCharm或是IDEA,其实pyCharm和IDEA使用的效果是一样的,这里我们就主要讲解下如何使用PyCharm来编写好代码,远程放到Linux主机执行和在Pycharm中本地执行的两种方法。

在讲解两种方法之前,先说明一下我本地的pyCharm不管是运行环境还是远程到Linux主机,用的都是Linux上的解释器进行运行代码的,如果不知道怎么远程配置,可以看下我的博客:https://blog.youkuaiyun.com/Jameslvt/article/details/81559459,pycharm远程配置,下面是我本地解释器的截图:

一、本地pyCharm开发,远程上到到Linux配置

由于我们是在本地开发,并没有Linux环境里面的spark环境和hadoop环境,所以我们需要配置一点东西,首先我们把spark安装包解压到本地,如下:由于我这里是mac,大家解压到D,E盘自己知道的地方即可,为什么要解压这个,因为这个文件夹里面有python文件,python文件下还有两个压缩包py4j-some-version.zip和pyspark.zip,之后会用到

 然后我们来配置pyCharm

随便打开一个project,pycharm右上角“run”三角形的左边有一个configurition,打开它。

打开后,我们需要做下面三步,

1、随便加一个python的运行config,填上名称

2、随便选择一个类

3.这一步比较重要,添加变量,切记不能有空格,出现框框,点击+,输入两个name,一个是SPARK_HOME,另外一个是PYTHONPATH,设置它们的values,SPARK_HOME的value是安装文件夹spark-2.2.0-bin-hadoop2.6的绝对路径,PYTHONPATH的value是该绝对路径+/python,例如我的SPARK_HOME的value是/Applications/spark/spark-2.2.0-bin-hadoop2.6,那么我的PYTHONPATH的value是/Applications/spark/spark-2.1.1-bin-hadoop2.7/python 。设置好了保存。

接下来这一步也比较关键:在perferences中的project structure中点击右边的“add  content root”,添加py4j-some-version.zip和pyspark.zip的路径(这两个文件都在Spark中的python文件夹下)

添加好了以后,会在工程里出现两个包:

这样,接下来我们写代码from pyspark import SparkContext,SparkConf 就不会报错了,当我们配置了远程以后,代码会自动上传到远程主机Linux主机,这时候,我们需要在Linux主机进行spark环境变量的配置,也就是修改环境变量:加上sparkhome和python的,其实这里不加python行不行,我没有尝试,大家可以尝试一下,因为我用到anaconda,必须引入这个环境变量,所以大家可以尝试一下,改完记得source一下,生效

环境变量配置完毕,我们可以直接到我们上传的代码那里直接执行代码:

那么远程Linux主机的介绍就到这里,接下来我们说一下在宿主机pyCharm调试

二、在pyCharm或IDEA中调试

这个调试关键是要用到远程的解释器,就是下面这个配置:

我的一切运行都是基于这个配置,要是想直接在本地的控制台调试,只需在代码中加入两个包,也就是我们第一个里面导入的两个包,但是这两个包是Linux环境下的位置,因为我们用的是Linux下的解释器,用远程执行方式的好处就是本地不需要配置那么多复杂的环境量,导致本地乱七八糟的。

然后直接运行即可。

 

另外,如果大家觉得我这个麻烦,可以看看这篇文章配置:

https://note.youdao.com/share/?id=fb511e558fae98fe6ca2f81d7a55316a&type=note#/

### 如何使用 PyCharm 远程连接 Spark 集群 #### 一、环境准备 为了成功配置 PyCharm 并实现远程连接到 Spark 集群,需完成以下准备工作: 1. **安装 Apache Spark** 访问官方下载页面 `http://spark.apache.org/downloads.html` 下载适合操作系统的版本并解压至指定目录[^2]。 2. **Jupyter Notebook 的 SparkMagic 扩展启用** 如果计划在 Jupyter 中测试 Spark 功能,则需要运行如下命令来激活 SparkMagic 插件: ```bash jupyter serverextension enable --py sparkmagic ``` 此步骤有助于验证 Spark 配置是否正常工作[^1]。 3. **本地依赖库安装** 若项目涉及机器学习或其他数据处理功能,可能需要额外安装 Python 库。例如: ```bash conda install scikit-learn==0.22.1 conda install pandas==0.24.2 conda install pyarrow==0.15.1 ``` 上述命令确保本地环境中具备必要的数据分析工具支持[^3]。 --- #### 二、PyCharm 配置远程 Spark 集群 以下是具体配置方法: 1. **创建 SSH 配置** -PyCharm 中打开项目的 "Run/Debug Configurations" 设置窗口。 - 添加一个新的 Remote Debug 或者 Docker Compose 类型的配置项。 - 填写目标 Spark 主节点的 IP 地址以及对应的用户名密码(或者私钥路径)。 2. **设置解释器为远程服务器上的 Python 解释器** - 转到 PyCharm 的 Preferences -> Project Interpreter。 - 点击齿轮图标选择 Add... -> SSH Interpreter。 - 输入 Spark 集群主节点的相关信息(IP、端口、用户名),并通过身份验证登录。 - 安装所需的 Python 版本及其依赖包于该远程主机上。 3. **调整 Spark 提交参数** 编辑提交脚本时可以加入自定义选项以便更好地适配实际场景需求: ```python from pyspark import SparkConf, SparkContext conf = (SparkConf() .setAppName("RemoteApp") .setMaster("yarn") # 使用 YARN 模式管理资源调度 .set("spark.executor.memory", "8g")) sc = SparkContext(conf=conf) ``` 4. **调试模式启动** 当一切就绪之后,在 PyCharm 内部直接点击 Run 即可触发作业执行流程;同时也可以切换成 Debug 方式逐步跟踪程序逻辑走向。 --- #### 三、注意事项 - 确认防火墙规则允许来自客户端设备的数据传输请求访问服务端开放接口。 - 对于 macOS 用户来说,利用 Homebrew 工具简化软件部署过程不失为一种高效手段[^4]。比如可以通过它快速获取最新版 JDK Hadoop 组件等关联组件。 ```python import os from pyspark.sql import SparkSession if __name__ == "__main__": spark = ( SparkSession.builder.appName("ExampleApplication").getOrCreate() ) df = spark.read.json("/path/to/sample-data.json") df.show() spark.stop() ``` 上述代码片段展示了如何初始化一个基本的应用实例,并加载 JSON 数据源进行展示操作。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值