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

RDD转换算子:重分区算子:【repartition、coalesce】

文章目录

    • 1、repartition
      • 功能
      • 语法
      • 举例
    • 2、coalesce
      • 功能
      • 语法
      • 举例


1、repartition

功能

调整RDD的分区个数,一般用于调大分区个数必须经过shuffle才能实现repartition底层就是 coalesce(shuffle=True)

语法

def repartition(self,numPartitions) -> RDD[T]

其中:
numPartitions是调整之后的分区数量

举例

如何构造sc对象并创建RDD 参考文章:
【Spark中创建RDD的两种方式】Spark中如何获取sc对象、以及创建RDD的两种方式

list01 = [1, 5, 2, 6, 9, 10, 4, 3, 8, 7]
# 没有指定分区,默认为2(sc对象需要构建)
rdd = sc.parallelize(list01)
# repartition 调整为4个分区,必然经历shuffle过程
bigrdd = rdd.repartition(4)

2、coalesce

功能

调整RDD的分区个数,可以选择是否经过Shuffle,默认情况下不经过shuffle

语法

def coalesce(self, numPartitions, shuffle:bool) -> RDD[T]

将一个小分区变为大分区,shuffle 必须等于True,否则分区数不发生改变
将一个大分区变为小分区,shuffle 可以等于 Flase

举例

list01 = [1, 5, 2, 6, 9, 10, 4, 3, 8, 7]
# 没有指定分区,默认为2
rdd = sc.parallelize(list01)
# 将一个小分区变为大分区,shuffle 必须等于True,否则分区数不发生改变
# 将一个大分区变为小分区,shuffle 可以等于 Flase
bigrdd = rdd.coalesce(8,shuffle=True)

http://www.kler.cn/a/381088.html

相关文章:

  • MyBatis 中常用标签
  • 【信号滤波 (上)】傅里叶变换和滤波算法去除ADC采样中的噪声(Matlab/C++)
  • 练14:DFS基础
  • GOC编程 第2课 简单命令---直走和转弯命令
  • 20241230 机器学习ML -(1)线性回归(scikitlearn)
  • Unity 6 Preview(预览版)新增功能
  • [C++ 核心编程]笔记 4.2.5 深拷贝与浅拷贝
  • Hive学习笔记
  • SQL入门的基础知识
  • SQL 像英语是个善意的错误
  • openapi回调地址请求不通过
  • 医院信息化与智能化系统(17)
  • iOS 再谈KVC、 KVO
  • 【Web自动化】探索Selenium与WebDriver的核心原理
  • Python OpenCV 图像改变
  • AI大模型赋能医学诊疗与药学服务——课题基金申请辅导项目成功举办
  • 安装Blender并使用
  • 【C++之STL】一文学会使用 string
  • 代码随想录之哈希表刷题总结
  • Redis学习:1. Redlock算法(MultiLock)和底层源码分析、2. Redis缓存过期淘汰策略
  • 【天线&运输】冲浪者检测系统源码&数据集全套:改进yolo11-DySnakeConv
  • C# 常用的测试框架合集
  • Oracle 第22章:数据仓库与OLAP
  • 【持续更新】【NLP项目】【自然语言处理】智能聊天机器人——“有问必答”【Chatbot】第1章、《系统、环境》
  • 论文解读:《Consensus-Aware Visual-Semantic Embedding for Image-Text Matching》
  • java.io.IOException: Too many open files