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个任务来处理每个分区的数据。

相关推荐
招财小梗29 分钟前
沈阳商贸公司AI企业服务优势几何?
大数据·人工智能·python
董可伦38 分钟前
Spark 数据倾斜:原因、定位与处理方法
大数据·分布式·spark
ZKKLLY43 分钟前
生成式引擎优化赛道崛起,优质GEO服务商该如何筛选评估
大数据·人工智能
IT古董1 小时前
FDE(Forward Deployed Engineer)详解:AI时代正在崛起的新型工程师
大数据·人工智能·数据挖掘
大大大大晴天3 小时前
大数据K8S基础:从 Pod 到 Service,看懂数据负载如何在云原生上运行
大数据·kubernetes
whcyhhh3 小时前
头歌实践教学平台:数据科学与大数据技术导论(七上)
大数据·数据库·python
东方护航数据恢复(深圳)3 小时前
国产信创数据库(达梦DM8/人大金仓)损坏恢复技术:从DMF文件解析到数据字典重建
大数据·数据库
starzy19904 小时前
SparkStreaming 之 foreachRDD 算子详解及代码实现
大数据·spark
用户594404103564 小时前
Redis 高并发高可用实战:从主从哨兵到集群分片,附完整 Java 代码
大数据
ApacheSeaTunnel4 小时前
一个关于数据集成的真相:链路 Success 不等于数据真实可靠
大数据·开源·数据集成·seatunnel·技术分享·数据同步