首页 > 其他分享 >在pyspark中运行代码

在pyspark中运行代码

时间:2025-01-23 21:56:13浏览次数:1  
标签:pyspark -- local 代码 zhc spark root 运行

二、在pyspark中运行代码
(一)pyspark命令
pyspark命令及其常用的参数如下:

pyspark --master <master-url>

Spark的运行模式取决于传递给SparkContext的Master URL的值。Master URL可以是以下任一种形式:

(1)local 使用一个Worker线程本地化运行SPARK(完全不并行)
(2)local[*] 使用逻辑CPU个数数量的线程来本地化运行Spark
(3)local[K] 使用K个Worker线程本地化运行Spark(理想情况下,K应该根据运行机器的CPU核数设定)
(4)spark://HOST:PORT 连接到指定的Spark standalone master。默认端口是7077
(5)yarn-client 以客户端模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR环境变量中找到
(6)yarn-cluster 以集群模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR环境变量中找到
(7)mesos://HOST:PORT 连接到指定的Mesos集群。默认接口是5050

在Spark中采用本地模式启动pyspark的命令主要包含以下参数:
--master:这个参数表示当前的pyspark要连接到哪个master,如果是local[*],就是使用本地模式启动pyspark,其中,中括号内的星号表示需要使用几个CPU核心(core),也就是启动几个线程模拟Spark集群
--jars: 这个参数用于把相关的JAR包添加到CLASSPATH中;如果有多个jar包,可以使用逗号分隔符连接它们。

比如,要采用本地模式,在4个CPU核心上运行pyspark:

$ cd /usr/local/spark
$ ./bin/pyspark --master local[4]
或者,可以在CLASSPATH中添加code.jar,命令如下:

$ cd /usr/local/spark
$ ./bin/pyspark --master local[4] --jars code.jar
可以执行“pyspark --help”命令,获取完整的选项列表,具体如下:

$ cd /usr/local/spark
$ ./bin/pyspark --help
(二)启动pyspark
执行如下命令启动pyspark(默认是local模式):

[root@bigdata zhc]# cd /usr/local/spark
[root@bigdata spark]# pyspark


可以在里面输入scala代码进行调试:

>>> 8*2+5
21
可以使用命令“exit()”退出pyspark:

>>> exit()
三、开发Spark独立应用程序
(一)编写程序
# /home/zhc/mycode/WordCount.py
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)
logFile = "file:///usr/local/spark/README.md"
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()
print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))
对于这段Python代码,可以直接使用如下命令执行:

[root@bigdata zhc]# cd /home/zhc/mycode
[root@bigdata mycode]# vi WordCount.py
[root@bigdata mycode]# ll
总用量 8
-rw-r--r-- 1 root root 430 12月 14 12:54 WordCount.py
-rw-r--r-- 1 root root 56 12月 9 18:55 word.txt
[root@bigdata mycode]# python3 WordCount.py
执行该命令以后,可以得到如下结果:

 

(二)通过spark-submit运行程序
可以通过spark-submit提交应用程序,该命令的格式如下:

spark-submit

--master <master-url>

--deploy-mode <deploy-mode> #部署模式

... #其他参数

<application-file> #Python代码文件

[application-arguments] #传递给主类的主方法的参数

可以执行“spark-submit --help”命令,获取完整的选项列表,具体如下:

$ cd /usr/local/spark
$ ./bin/spark-submit --help
以通过 spark-submit 提交到 Spark 中运行,命令如下:
注意要在 /home/zhc/mycode/ 路径下执行spark-submit,否则要使用绝对路径。

[root@bigdata mycode]# spark-submit WordCount.py
[root@bigdata zhc]# spark-submit /home/zhc/mycode/WordCount.py #绝对路径
运行结果如图所示:

 

此时我们发现有大量的INFO信息,这些信息属于干扰信息,对于我们有用的只有“Lines with a: 62, Lines with b: 30”这一行。为了避免其他多余信息对运行结果的干扰,可以修改log4j的日志信息显示级别,具体方法如下:

[root@bigdata spark]# cd /usr/local/spark/conf
[root@bigdata conf]# ll
总用量 44
-rw-r--r-- 1 zhc zhc 996 10月 29 2018 docker.properties.template
-rw-r--r-- 1 zhc zhc 1105 10月 29 2018 fairscheduler.xml.template
-rw-r--r-- 1 zhc zhc 2025 10月 29 2018 log4j.properties.template
-rw-r--r-- 1 zhc zhc 7801 10月 29 2018 metrics.properties.template
-rw-r--r-- 1 zhc zhc 865 10月 29 2018 slaves.template
-rw-r--r-- 1 zhc zhc 1292 10月 29 2018 spark-defaults.conf.template
-rwxr-xr-x 1 root root 4300 12月 13 20:33 spark-env.sh
-rwxr-xr-x 1 zhc zhc 4221 10月 29 2018 spark-env.sh.template
[root@bigdata conf]# cp log4j.properties.template log4j.properties
[root@bigdata conf]# vi log4j.properties
打开 log4j.properties 文件后,可以发现包含如下一行信息:

log4j.rootCategory=INFO, console

将其修改为:

log4j.rootCategory=ERROR, console

 

再次回到 /home/zhc/mycode/ 路径下执行spark-submit,就会发现没有INFO信息了。

[root@bigdata mycode]# spark-submit WordCount.py

————————————————

 

标签:pyspark,--,local,代码,zhc,spark,root,运行
From: https://www.cnblogs.com/my0326/p/18688664

相关文章

  • 基于Harmony OS Next ArkTS API 13实现的网易云音乐App模块代码分析——后台运行模块
    虽然音乐播放以及下载的后台应用实现有FA模型的ServiceAbility可以实现,但是目前主推的Stage模型中,后台应用的实现更推荐使用申请长时间应用来实现。项目地址:Chenlvin/CloudMusic-HarmonyOSNext:支持鸿蒙5.0的音乐App相关文档:长时任务@ohos.resourceschedule.backgroundTaskM......
  • 代码随想录算法训练营第2天|209. 长度最小的子数组、59.螺旋矩阵II
    LeetCode2092025-01-2318:31:09星期四题目描述:力扣209文档讲解:代码随想录(programmercarl)209.长度最小的子数组视频讲解:《代码随想录》算法视频公开课:拿下滑动窗口!|LeetCode209长度最小的子数组代码随想录视频内容简记这道题目仍然是用双指针的思想,如果是暴力解法......
  • 国产编辑器EverEdit - 代码片段功能
    1代码片段1.1应用场景  在编写代码或脚本过程中,有些很通用的小段代码,比如:for循环或者函数声明等语句,完全手敲代码将是一个比较繁琐的过程,因此,一般的编辑器都提供了代码片段的功能,将一些比较固定的代码提前写好存放于代码片段列表,用户使用时只需要通过关键字触发或者......
  • 获取1.5小时之前的代码
    #include<iostream>#include<chrono>#include<ctime>#include<iomanip>#include<sstream>intmain(){//获取当前时间点autonow=std::chrono::system_clock::now();//计算1.5小时前的时间点autooneAndHalfHoursAgo=now......
  • Vue 性能优化:从渲染优化到代码分割的全面指南
    目录Vue极速入门第12节:Vue性能优化:从渲染优化到代码分割的全面指南引言1.减少不必要的渲染:`v-once`与`v-memo`的使用1.1什么是渲染优化?1.2使用`v-once`指令1.3使用`v-memo`指令1.4`v-once`与`v-memo`的对比2.懒加载与代码分割:路由懒加载与动态导入......
  • 代码随想录Day42 | 188.买卖股票的最佳时机IV,309.最佳买卖股票时机含冷冻期,714.买卖
    代码随想录Day42|188.买卖股票的最佳时机IV,309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费188.买卖股票的最佳时机IV股票买卖通用代码模板classSolution{publicintmaxProfit(intk,int[]prices){intn=prices.length;......
  • Python · Jax | 在 python 3.8 上安装 jax,运行 offline RL 的 IQL
    致谢师兄的jax环境,完全按照师兄的conda_env.yml配置的(如何导出其他环境的conda_env.yml:Conda|如何(在新服务器上)复制一份旧服务器的conda环境,Linux服务器)目录01安装各种库02安装jax03安装dm_controlmetaworldd4rl04测试05各种库的参考版本首先,新建一个con......
  • Rust代码中有一个Vec集合对象,此集合中存放了一些结构体实例,这个Vec集合对象的生命周期
    eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee当你需要长生命周期的Vec并想在多个地方引用它内部的结构体实例时,有几种方法可以实现这种设计。以下是不同场景的解决方案:方法1:使用索引引用Vec元素如果Vec本身的生命周期长,而你只是需要访问其元素,可以通过索引......
  • 修改公司网站是否需要修改代码以及涉及的具体工作内容
    问题描述当对公司的官方网站进行改版或功能调整时,是否一定需要直接修改源代码?如果不直接改代码,还有哪些替代方案?答案对于公司网站的修改,是否需要直接修改代码取决于具体的需求范围和技术实现方式。以下是对不同情况下的分析:无需修改代码的情况:内容更新:如果是简单的文本、......
  • 网站里的代码被修改了怎么办?
    如果您发现网站里的代码被修改了,首先要做的是尽快采取措施恢复原始代码,以防止进一步的损失或安全问题。以下是一些建议:备份原始代码:如果您有网站代码的备份,立即恢复备份。如果没有备份,尝试从版本控制系统(如Git)中恢复代码。检查修改记录:查看网站的版本控制系统或日志文件,了解代......