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

相关推荐
诗旸的技术记录与分享6 小时前
Flink-1.19.0源码详解-番外补充3-StreamGraph图
大数据·flink
资讯分享周6 小时前
Alpha系统联结大数据、GPT两大功能,助力律所管理降本增效
大数据·gpt
G皮T8 小时前
【Elasticsearch】深度分页及其替代方案
大数据·elasticsearch·搜索引擎·scroll·检索·深度分页·search_after
TDengine (老段)8 小时前
TDengine STMT2 API 使用指南
java·大数据·物联网·时序数据库·iot·tdengine·涛思数据
华子w9089258599 小时前
基于 Python Django 和 Spark 的电力能耗数据分析系统设计与实现7000字论文实现
python·spark·django
用户Taobaoapi201410 小时前
母婴用品社媒种草效果量化:淘宝详情API+私域转化追踪案例
大数据·数据挖掘·数据分析
G皮T10 小时前
【Elasticsearch】检索排序 & 分页
大数据·elasticsearch·搜索引擎·排序·分页·检索·深度分页
小新学习屋14 小时前
Spark从入门到熟悉(篇三)
大数据·分布式·spark
rui锐rui14 小时前
大数据学习2:HIve
大数据·hive·学习
G皮T14 小时前
【Elasticsearch】检索高亮
大数据·elasticsearch·搜索引擎·全文检索·kibana·检索·高亮