跟着chatgpt学习|1.spark入门(2)

跟着chatgpt学习|1.spark入门-CSDN博客

3.Spark的执行和数据分区

3.1 spark执行流程

  1. 应用程序启动

Spark应用程序从驱动器程序开始执行,创建SparkContext对象。

  1. 任务划分

将应用程序操作划分为一系列任务,并分发给执行器。

  1. 任务调度

集群管理器将任务分配给可用的执行器。

  1. 任务执行

执行器启动任务执行线程,处理任务所需的数据。

  1. 数据处理

执行任务的线程对数据进行转换和操作。

  1. 数据传输与处理

数据在内存中共享和复用,根据需要在磁盘和内存之间交换。

  1. 结果返回

任务执行完成后,结果返回给驱动器程序。

  1. 应用程序结束

所有任务执行完成,驱动器程序处理结果并关闭SparkContext对象。

3.2 Spark的作业调度

Spark作业调度的过程如下:

  1. 当应用程序提交给Spark集群时,驱动器程序创建一个调度器(Scheduler)。

  2. 调度器根据应用程序的需求和集群的可用资源,将作业划分为一系列任务(Tasks)。

  3. 任务被分配给可用的执行器(Executors),并在集群中的工作节点上执行。

  4. 调度器会根据任务的依赖关系和数据分区,决定任务的执行顺序。

  5. 如果任务之间存在依赖关系,调度器会确保依赖任务在前置任务完成后才能执行。

  6. 调度器还会考虑数据本地性,尽可能将任务分配给存储有相关数据的工作节点,以减少数据传输的开销。

  7. 调度器会监控任务的执行状态,并处理失败的任务,例如重新分配或重新执行失败的任务。

  8. 一旦所有任务执行完成,调度器会将结果返回给驱动器程序,应用程序可以继续处理结果或进行下一步操作。

总的来说,Spark作业调度器负责将应用程序划分为可执行的任务,并将这些任务分配给可用的执行器进行并行执行。调度器考虑任务之间的依赖关系、数据本地性和资源利用等因素,以最大化作业的执行效率。

3.3 spark的数据分区

1.Hash分区

通过对数据的键进行哈希计算,将相同哈希值的数据分配到同一个分区。这种方式通常适用于需要均匀分布 数据的情况。

2.Range分区

根据数据的键的范围将数据划分为不同的分区。每个分区负责一定范围的键。这种方式通常适用于有序 的数据集。

3.Round-robin分区

将数据按照轮询的方式均匀分配到不同的分区。这种方式适用于需要均匀分布数据且不依赖键 的情况。

4.自定义分区

Spark还提供了自定义分区的功能,允许用户根据自己的需求实现特定的分区逻辑。

相关推荐
星恒随风27 分钟前
Linux进程信号(二):深入理解信号阻塞、未决、sigaction、中断机制、可重入函数与SIGCHLD
linux·运维·服务器·笔记·学习
旖旎夜光30 分钟前
【LangGraph实战】LangGraph 学习笔记(五):信息裁剪、人机交互与时间旅行
笔记·python·学习·ai·人机交互·langgraph
努力努力再努力FFF36 分钟前
2026AI 证书参考清单:抛开名气,按自身情况理性选证
学习
qq_284274054 小时前
机械设计基础·滚动轴承全解(类型·代号·选型·寿命)+轮系与蜗杆蜗轮传动
笔记·学习·自动化·制造
2603_965148119 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
kaixin_啊啊11 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
xier_ran11 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
别动我齐刘海13 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
m4Rk_14 小时前
【论文阅读】Agent 记忆机制(99):PrisMem——从整体分数搜索走向能力驱动的记忆自进化
论文阅读·人工智能·学习·开源·github
PC2005-cloud15 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql