当前位置: 首页 > article >正文

Apache Spark — Repartition 与 Coalesce(调整数据集分区)

Apache Spark — Repartition 与 Coalesce

在这里插入图片描述

在 Apache Spark 中,repartitioncoalesce 是两个用于调整数据集分区数的方法。
在这里插入图片描述
大家思考一下为什么Apache Spark需要对数据进行分区呢?

在这里插入图片描述
Partitioning is a key concept in distributed systems where the data is split into multiple partitions so that you can execute transformations on multiple partitions in parallel, which helps a job to finish faster.

在分布式系统中,分区是一个关键概念,它将数据拆分成多个分区,以便可以在多个分区上并行执行转换操作,这有助于加快作业完成的速度。
在这里插入图片描述
在集群的多个节点上并行处理数据,通过同时执行任务来提高性能,从而加速计算并减少处理大规模数据集所需的总体时间。

在这里插入图片描述

1. repartition

作用: 重新分区数据集,增加或减少分区数量。
在这里插入图片描述

实现: repartition 通过全量洗牌(full shuffle)实现,即数据会被重新分配到新的分区中,这可能会导致较高的计算和网络开销。

在这里插入图片描述

  • 建议在增加分区数量时使用repartition,因为它涉及所有数据的随机排序。

在这里插入图片描述

  • 在数据倾斜的情况下,repartition 可以用来重新分配数据,使得数据在各个分区中更均衡。
val repartitionedDF = df.repartition(100)//将数据帧 `df` 重新分区为 100 个分区。

优缺点:

  • 可以增加分区数量,提高并行度。

  • 数据分布更均匀。

  • shuffle可能会导致性能下降,特别是当数据量很大时。


2. coalesce

作用: 减少数据集的分区数。
在这里插入图片描述

实现: coalesce 尝试通过减少分区数来优化性能,通常通过合并现有的分区而不是全量洗牌来实现。这种方法可以减少网络开销,因为它不需要重新分配所有的数据。
在这里插入图片描述

val coalescedDF = df.coalesce(10) //将数据帧 `df` 合并为 10 个分区

Tips:

  • 性能优化:减少网络和计算开销,特别是减少分区时。
  • 更高效:避免了全量洗牌的开销。
  • 不能增加分区数,只能减少分区数。
  • 可能会导致数据在分区中的不均匀分布。

Final

coalesce 通常比 repartition 性能更高,并且会产生更少的阶段(stage)—— coalesce 不涉及洗牌(shuffle)操作。

  • 性能: coalesce 主要用于减少分区数,它尝试通过合并现有的分区而不是重新分配所有的数据来实现。这种方法避免了全量洗牌的开销,因此通常性能更高,尤其是在数据量很大时。
    在这里插入图片描述

  • 阶段(Stage): 由于 coalesce 不涉及全量洗牌,它通常会生成更少的 Spark 作业阶段。全量洗牌(例如 repartition)需要更多的计算和网络传输,因此会创建额外的阶段来完成这些操作。而 coalesce 只需合并现有的分区,因此阶段数较少。
    在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/news/310120.html

相关文章:

  • 【软件测试】压力测试的学习总结
  • 作业帮大数据面试题及参考答案
  • Linux shell编程学习笔记81:zcat命令——快速查看压缩文件内容
  • 函数题 6-10 阶乘计算升级版【PAT】
  • IOS 25 实现歌单详情(UITableView)列表 ②
  • 即插即用 | YOLOv8热力图可视化方法详解
  • MySQL的(DDL、DCL、DQL、DML)语言学习
  • 7.7opencv中(基于C++) 翻转图像
  • 完全解决git clone超时和git子模块无法下载问题
  • CSS学习路线
  • 11 vue3之插槽全家桶
  • 【JavaEE】多线程编程引入——认识Thread类
  • mysql怎样优化count(*) from 表名 where …… or ……这种慢sql
  • c++基础入门三
  • Java Web开发中处理Response返回值的技巧与实践
  • 1×1卷积核【super star 卷积核】
  • 【数据结构-线段树】【差分】力扣732. 我的日程安排表 III
  • 基于PHP的丽江旅游管理系统
  • VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server 2025
  • STM32快速复习(十二)FLASH闪存的读写
  • [Meachines] [Medium] Bart Server Monitor+Internal Chat+UA投毒+Winlogon用户密码泄露权限提升
  • MySQL高阶1777-每家商店的产品价格
  • 文心智能体 恐怖类游戏
  • 一.Oracle每日运维操作
  • bug | pycharm社区版无sciview解决办法
  • JVM 调优篇7 调优案例1-堆空间的优化解决
  • Holynix: v1
  • 基于SSM的在线家用电器销售系统
  • 【ARM】Trustzone和安全架构
  • [SDX35+WCN6856]SDX35 + WCN6856 WiFi导致系统crash问题分析及解决方案