四、Spark-Python测试与开发环境

Spark-Python

1. PyCharm环境

1.1 解压安装包

​ 解压Spark安装包到Windows本地路径,路径中最好没有空格。

在这里插入图片描述

1.2 Linux安装Python

​ 上传Anaconda-Linux安装文件到虚拟机,不需要解压,直接使用bash命令即可运行。文件来自于[https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/]

#安装插件
yum install -y bzip2

#安装命令
bash Anaconda3-5.2.0-Linux-x86_64.sh

​ 默认安装路径为“/root/anaconda3”,可自行输入进行修改到空地址,输出的路径必须为不存在,否则会报如下错。

ERROR: File or directory already exists: '/root/anaconda3'

​ 安装进行中,一直“yes”,最后一个不行了就“no”,安装完成后,生效环境变量。

#安装过程中,会默认写入bashrc环境变量中,也可以自行写入/etc/profile
source ~/.bashrc

#命令行输出Python,查看结果
python

在这里插入图片描述

1.3 Python版本选择

​ 选择与Liunx同一个版本的Anaconda安装包,选择与Linux相同的Python版本,避免报错。

在这里插入图片描述

1.4 配置依赖

​ 选择菜单栏“File” —>“Settings” —>“Project Structure ”命令,快捷键为“ctrl+alt+shift+s”打开如图所示界面

在这里插入图片描述

​ 导包成功

在这里插入图片描述

1.5 引入spark-core包

​ 将Spark解压路径【spark-2.4.1-bin-hadoop2.7\python】下的【pyspark、pyspark.egg-info】,拷贝到Ananconda安装路径【Anaconda3\Lib\site-packages】下。

在这里插入图片描述

1.6 本地环境测试

​ 使用简单WordCount代码进行环境测试,准备wd.txt文件

spark hadoop hive
hive hadoop
hbase
hive spark
flume hadoop
spark hive

代码:

from pyspark import SparkConf, SparkContext

# os.environ["PYSPARK_PYTHON"]="/home/python3/bin/python"
# os.environ["PYSPARK_DRIVER_PYTHON"]="/home/python3/bin/python"

if __name__ == '__main__':
   # conf = SparkConf().setMaster("spark://Pspark:7077").setAppName("wordTest")
    #local[*]为本地模式,aka在windows上运行
    conf = SparkConf().setMaster("local[*]").setAppName("rdd-1")
    sc = SparkContext(conf=conf)

    counts = sc.textFile("hdfs://Pspark:9000/wd.txt")\
        .flatMap(lambda line:line.split(" "))\
        .map(lambda x:(x, 1))\
        .reduceByKey(lambda a,b:a+b).collect()
    print(counts)

    # 习惯
    sc.stop()

在这里插入图片描述

1.7 提交服务器

​ 代码:

from pyspark import SparkConf, SparkContext

if __name__ == '__main__':
    #其中Pspark为服务端地址ip映射,已经添加到Windows中hosts文件,未添加可使用ip地址替代
    conf = SparkConf().setMaster("spark://Pspark:7077").setAppName("wordTest")
    #conf = SparkConf().setMaster("local[*]").setAppName("rdd-1")
    sc = SparkContext(conf=conf)

    counts = sc.textFile("hdfs://Pspark:9000/wd.txt")\
        .flatMap(lambda line:line.split(" "))\
        .map(lambda x:(x, 1))\
        .reduceByKey(lambda a,b:a+b).collect()
    print(counts)

    # 习惯
    sc.stop()

在这里插入图片描述

1.8 常遇到报错:

1.8.1 乱码

​ 控制台输出乱码或者符号,究其原理为jdk问题

第一步:检查jdk版本,最佳为1.8,不建议版本过高
第二步:检查JAVA_HOME 正确的地址为:【G:\Jdk8】,不需要指定到bin目录,路径中不能有空格
排查完成后,问题基本可以解决
第三步:再出现乱码,或者电脑多版本jdk,则需要使用os.environ的方法,在程序中指定JAVA_HOME
例:
import os
os.environ["JAVA_HOME"]="G:\Jdk8"
1.8.2 Python报错

​ 一般是由于电脑内Python版本过多,环境变量过于复杂导致。

方法一:在环境变量删除不必要的Python

方法二:使用os.environ的方法,在程序中指定PYSPARK_PYTHON
import os
os.environ["PYSPARK_PYTHON"]="G:\Anaconda3\envs\Pspark3.6\python.exe"
方法二弊端:强制写入的话,如果提交服务器运行,则需要修改PYSPARK_PYTHON地址,麻烦。
1.8.3 资源请求报错

​ 提交服务端运行Spark时,程序卡在请求资源直达超时。原因为:提交服务本质为双向通讯,虚拟机【Pspark】与Windows的双向通讯,所以需要添加双向的映射服务。如果是手机热点提供的WiFi或者不稳定连接,包括360都会有可能导致报错。

vim /etc/hosts
#虚拟机映射,主要修改为最后一行,其余已在前面步骤完成
#192.168.80.1 为NAT网络连接模式的网关。如果是桥接模式,则可以添加实际的windowip地址
#MSI 为Windows机器名称,可在设置里面查看,或者进入Spark页面,查看进程阻塞位置,也会看到。
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.80.150  Pspark
192.168.80.1    MSI


#Windows映射
#地址:C:\Windows\System32\drivers\etc,修改hosts文件,有权限无法修改的话,拖到桌面,修改完再拖回。
#写入内容
192.168.80.150  Pspark

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用spark-submit命令可以提交Python脚本到Spark集群中运行。具体步骤如下: 1. 确保已经安装好了Spark集群,并且配置好了环境变量。 2. 编写Python脚本,并将其保存到本地文件系统中。 3. 打开终端,输入以下命令: ``` spark-submit --master <master-url> <path-to-python-script> ``` 其中,`<master-url>`是Spark集群的URL,可以是local、yarn或者mesos等;`<path-to-python-script>`是Python脚本的路径。 4. 执行命令后,Spark会启动一个Driver程序,并将Python脚本分发到集群中的Executor节点上运行。 5. 执行完成后,可以在终端中查看输出结果。 注意:在提交Python脚本时,需要确保Python环境与Spark集群中的Python环境一致,否则可能会出现兼容性问题。 ### 回答2: spark-submit是Spark框架中用于提交作业的命令工具,可以将Python、Java、Scala等各种语言编写的Spark应用打包后统一提交到集群上运行。本文将主要介绍如何使用spark-submit提交Python脚本。 首先,需要将Python程序打包成一个压缩包,例如zip或tar.gz格式,这里以zip格式为例。假设我们的Python程序存放在/home/user/code/目录下,我们需要将其打包成myapp.zip文件,可以使用以下命令: ``` cd /home/user/code/ zip -r myapp.zip . ``` 上述命令将/home/user/code/目录下的所有文件和子目录打包成myapp.zip文件。 接下来,我们就可以使用spark-submit提交这个Python应用了。下面是一个示例命令: ``` spark-submit --master <master-url> --deploy-mode <deploy-mode> --py-files <comma-separated-list-of-.zip/.egg-files> /home/user/code/myapp.py <arguments> ``` 解释一下各个参数的含义: - --master:指定Spark作业运行的master URL,例如local表示本地模式,yarn表示在YARN集群中运行。 - --deploy-mode:指定Spark程序的部署模式,一般有两种:cluster和client。cluster表示在集群上运行,client表示在提交作业的机器上运行。默认为client。 - --py-files:指定需要上传到集群的Python依赖库。如果Python脚本依赖了第三方库,需要将这些库打包成zip或egg文件,通过--py-files参数上传到集群。多个文件用逗号隔开。 - /home/user/code/myapp.py:需要运行的Python脚本文件,这里我们使用之前打包的myapp.zip文件。 - <arguments>:可选参数,传递给Python脚本的命令行参数。 上述命令会将myapp.zip文件上传到集群,然后在集群上启动一个Python进程,并执行myapp.py文件中的代码。Spark会自动分配资源给这个进程,并将任务分配到各个节点上执行。 总结一下,使用spark-submit提交Python脚本需要先将Python程序打包成zip或tar.gz文件,并使用--py-files参数上传Python依赖库。在提交作业时需要指定master URL、部署模式、Python脚本文件以及传递给脚本的命令行参数。通过这些参数,Spark可以自动将作业分配到集群上运行,实现分布式计算。 ### 回答3: spark-submit是Spark的一个命令行工具,用于将Spark应用程序提交到集群中。在使用spark-submit提交Python脚本时,需要遵守以下步骤: 1. 首先,需要确定要提交的Python脚本的位置。假设我们的Python脚本位于/home/spark/python_script.py。 2. 接下来,需要使用spark-submit命令来提交Python脚本。命令格式为: $SPARK_HOME/bin/spark-submit --master <master-url> /home/spark/python_script.py 其中,<master-url>表示Spark集群的master节点的URL。 3. 提交Python脚本时,还可以指定一些配置参数。例如,可以使用--num-executors参数指定Spark应用程序使用的执行者数量,--executor-memory参数指定每个执行者使用的内存大小,--driver-memory参数指定驱动程序使用的内存大小等等。 4. 在提交Python脚本后,Spark将在集群中启动一个应用程序,并执行Python脚本中的任务。任务的执行结果将被输出到控制台或指定的输出文件中。 需要注意的是,Spark支持的Python版本是2.6或2.7,而且要确保Python脚本中引用的所有依赖包都已经安装在集群的所有节点上。如果有依赖包未安装,则必须手动将其安装到所有节点上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值