首页 > 系统相关 >spark-shell(pyspark)单机模式使用和编写独立应用程序

spark-shell(pyspark)单机模式使用和编写独立应用程序

时间:2024-03-24 22:31:58浏览次数:28  
标签:shell pyspark py spark local line python3

spark有四种部署方式:Local,Standalone,Spark on Mesos,Spark on yarn。第一个为单机模式,后三个为集群模式。

spark-shell支持python和scala,这里使用python。

1.启动pyspark环境

在spark安装目录下

./bin/pyspark

进入之后,如下图: 

2.编写程序

新建代码文件WordCount.py,并编写程序

touch WordCount.py
vim WordCount.py
from pyspark import SparkConf, SparkContext
# 使用本地模式启动
conf = SparkConf().setMaster("local").setAppName("My App")
# 生成一个SparkContext对象
sc = SparkContext(conf=conf)
# 设置文件路径
logFile = "file:///opt/servers/spark/README.md"
# 读取README.md文件生成的RDD
logData = sc.textFile(logFile, 2).cache()
# 分别统计RDD元素中包含字母a和b的行数
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))

运行代码:python3 WordCount.py

如果报如下错误:

python3 WordCount.py
Traceback (most recent call last):
  File "WordCount.py", line 1, in <module>
    from pyspark import SparkConf, SparkContext
ModuleNotFoundError: No module named 'pyspark'
说明没有pyspark模块。

进入python安装目录下的lib/site-packages目录下,使用pip下载安装pyspark,这里使用国内清华大学镜像网站。

pip install pyspark -i http://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

下载一个镜像,中间出了好几个问题,被我记录在

pip安装更新第三方库报错解决-CSDN博客

安装pyspark库成功后,重新运行代码,然后还是报错

Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
/usr/local/python3/lib/python3.7/site-packages/pyspark/context.py:317: FutureWarning: Python 3.7 support is deprecated in Spark 3.4.
  warnings.warn("Python 3.7 support is deprecated in Spark 3.4.", FutureWarning)
Traceback (most recent call last):
  File "WordCount.py", line 11, in <module>
    numAS = logData.filter(lambda line: 'a' in line).count()
  File "/usr/local/python3/lib/python3.7/site-packages/pyspark/rdd.py", line 2297, in count
    return self.mapPartitions(lambda i: [sum(1 for _ in i)]).sum()
  File "/usr/local/python3/lib/python3.7/site-packages/pyspark/rdd.py", line 2273, in sum
    0, operator.add
  File "/usr/local/python3/lib/python3.7/site-packages/pyspark/rdd.py", line 2025, in fold
    vals = self.mapPartitions(func).collect()
  File "/usr/local/python3/lib/python3.7/site-packages/pyspark/rdd.py", line 1814, in collect
    sock_info = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
  File "/usr/local/python3/lib/python3.7/site-packages/pyspark/rdd.py", line 5442, in _jrdd
    self.ctx, self.func, self._prev_jrdd_deserializer, self._jrdd_deserializer, profiler
  File "/usr/local/python3/lib/python3.7/site-packages/pyspark/rdd.py", line 5250, in _wrap_function
    sc._javaAccumulator,
TypeError: 'JavaPackage' object is not callable

是因为pyspark版本过高, 改成3.2.0版本的就可以了

pip3 install pyspark==3.2.0 -i http://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
Looking in indexes: http://pypi.tuna.tsinghua.edu.cn/simple/

再次运行代码,运行结果如下:

3.通过spark-submit运行程序

进入spark安装目录下的bin中

./spark-submit WordCound.py的绝对路径
省略了<master-url>参数,默认本地模式

运行结果如下 (部分截图):

 在这个过程中产生了许多其他信息干扰,可以通过修改log4j的日志信息显示级别,来消除干扰信息。

进入spark安装目录下的配置文件夹conf

cp log4j2.properties.template log4j2.properties

我的是spark-3.3.3版本,日志文件名字为log4j2.properties.template,每个版本的日志文件名字不太一样,具体的,要按照自己安装的版本的日志文件来,复制日志文件。

编辑日志文件

vim log4j2.properties

把显示控制台的信息改为error,保存并退出。

再次使用spark-submit运行python文件,结果如下

已经没有其他信息干扰了。 

标签:shell,pyspark,py,spark,local,line,python3
From: https://blog.csdn.net/m0_68131322/article/details/136895813

相关文章

  • 怎么把spark中的时间转换成天数
    目录怎么把Spark中的时间转换成天数1.创建SparkDataFrame2.将时间转换成天数3.结果展示数据准备和DataFrame创建时间转换成天数结果展示SparkDataFrame特点和优势:创建DataFrame:DataFrame操作:怎么把Spark中的时间转换成天数在Spark中,处理时间数据时经常需要......
  • CSAPP Shell Lab
    sakura......
  • Linux学习记录13——shell脚本
    一.学习的内容    shell终端解释器提供了诸如循环、分支等高级编程语言才有的控制结构。shell脚本命令的工作方式有下面两种:    交互式:用户每输入一条命令就立即执行        批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本......
  • Spark重温笔记(三):Spark在企业中为什么能这么强?——持久化、Checkpoint机制、共享变量与
    Spark学习笔记前言:今天是温习Spark的第3天啦!主要梳理了Spark核心数据结构:RDD(弹性分布式数据集),包括RDD持久化,checkpoint机制,spark两种共享变量以及spark内核调度原理,希望对大家有帮助!Tips:"分享是快乐的源泉......
  • 「Linux系列」Shell 流程控制if-else/for循环/While循环/until循环/case语句/跳出循环
    文章目录一、Shell流程控制二、If语句三、For循环四、While循环五、Until循环六、Case语句七、跳出循环break/continue八、相关链接一、Shell流程控制Shell脚本中的流程控制结构允许你根据条件执行不同的代码块,或者重复执行某些代码块。这些结构包括if语句......
  • 定制和配置你的 shell 环境的一个强大工具——.bashrc
    本文结构:a、简单介绍b、操作示例c、注意事项a、当你在一个新的终端会话开始时,Bashshell会读取并执行.bashrc文件中的命令。这使得.bashrc成为定制和配置你的shell环境的一个强大工具。b、以下是一些.bashrc文件中常见的元素和它们的作用:1.别名(Aliases)  .bas......
  • 03-SparkSQL入门
    0SharkSpark的一个组件,用于大规模数据分析的SQL查询引擎。Shark提供了一种基于SQL的交互式查询方式,可以让用户轻松地对大规模数据集进行查询和分析。Shark基于Hive项目,使用Hive的元数据存储和查询语法,并基于Hive进行了性能优化和扩展。0.1设计灵感来自Google的......
  • 一键掌控:Shell脚本自动化安装与管理Conda环境的艺术
    前面写了个博客《conda:解决多项目开发环境配置的神器!》简单介绍了Conda的安装和基本命令,在做开发时经常会使用Conda建立多个应用环境,Conda的命令虽不复杂,但还是有时会弄混,所以就考虑写个脚本,一条指令创建环境。没啥难度,仅仅是方便自己使用而已。1创建Conda应用环......
  • shell脚本基础改造
    一、基础的shell脚本格式#!/bin/bash2#3#********************************************************************4#Author:LJH5#QQ:......
  • 希尔排序(Shell Sort)
    publicstaticvoidmain(String[]args){int[]arr={9,6,8,4,2,5,7,3,1};int[]arr2={9,6,8,4,2,5,7,3,1};shellSort(arr);System.out.println("=====================");shellSort2(arr2);}/***shell排序,插入排序......