Spark区分应用程序 Application、作业Job、阶段Stage、任务Task

目录

一、Spark核心概念

1、应用程序Application

2、作业Job

3、阶段Stage

4、任务Task

二、示例


一、Spark核心概念

在Apache Spark中,有几个核心概念用于描述应用程序的执行流程和组件,包括应用程序 Application、作业Job、阶段Stage、任务Task:

1、应用程序Application

指一个Spark应用程序通常指的是用户编写的Spark程序,它可能包含多个作业。例如一个基于Spark的机器学习算法的实现,或者一个处理日志文件并生成报告的程序。

2、作业Job

指由一个action操作触发的计算任务集合,action操作是触发实际计算的操作,例如count(), collect(), saveAsTextFile()等算子。例如saveAsTable()操作将触发一个作业来将DataFrame的内容保存到表中。

3、阶段Stage

一个作业会被分解成多个阶段,每个阶段包含一系列并行的任务。阶段通常由宽依赖(即需要跨分区重新分区的操作)来划分。例如,在一个简单的Word Count程序中,读取文本文件是一个阶段,然后对文本进行分词并计算每个单词的频率是另一个阶段。

4、任务Task

任务是最小的执行单位,每个任务对应于一个阶段中的一个数据分区。Spark将任务发送到集群中的执行器去执行。例如,在Word Count程序的第二个阶段,如果数据被分为10个分区,那么将会有10个任务分别计算每个分区的单词频率。

二、示例

python 复制代码
from pyspark.sql import SparkSession

# 创建Spark会话
spark = SparkSession.builder.appName("test").getOrCreate()

# 读取文本文件
text_file = spark.sparkContext.textFile("/data/words.txt")

# 对文本进行分词并计算每个单词的频率
word_counts = text_file.flatMap(lambda line: line.split()).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b)

# 触发作业,将结果保存到HDFS
word_counts.saveAsTextFile("/output")

# 关闭Spark会话
spark.stop()

上例中,整个Python脚本就是一个Spark应用程序,用于计算文本文件中每个单词的出现次数。

当执行saveAsTextFile算子时,触发了作业,因为saveAsTextFile是一个行动操作。该作业包含两个阶段,第一个阶段是读取文本文件并执行flatMap和map操作,第二个阶段是执行reduceByKey操作。

每个阶段会有多个任务,具体数量取决于数据分区的数量。例如,如果text_file有10个分区,那么在第一个阶段会有10个任务来处理每个分区的数据。

相关推荐
线条122 分钟前
大数据 ETL 工具 Sqoop 深度解析与实战指南
大数据·sqoop·etl
mazhafener1237 小时前
智慧照明:集中控制器、单双灯控制器与智慧灯杆网关的高效协同
大数据
打码人的日常分享7 小时前
物联网智慧医院建设方案(PPT)
大数据·物联网·架构·流程图·智慧城市·制造
Lansonli9 小时前
大数据Spark(六十一):Spark基于Standalone提交任务流程
大数据·分布式·spark
Rverdoser10 小时前
电脑硬盘分几个区好
大数据
傻啦嘿哟10 小时前
Python 数据分析与可视化实战:从数据清洗到图表呈现
大数据·数据库·人工智能
Theodore_102210 小时前
大数据(2) 大数据处理架构Hadoop
大数据·服务器·hadoop·分布式·ubuntu·架构
簌簌曌11 小时前
CentOS7 + JDK8 虚拟机安装与 Hadoop + Spark 集群搭建实践
大数据·hadoop·spark
Theodore_102213 小时前
大数据(1) 大数据概述
大数据·hadoop·数据分析·spark·hbase
Aurora_NeAr13 小时前
Apache Spark详解
大数据·后端·spark