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

RDD触发算子:collectAsMap以及foreachParition的语法以及举例使用

文章目录

    • 1、collectAsMap算子
      • 功能
      • 语法
      • 举例
    • 2、foreachParition算子
      • 功能
      • 语法
      • 举例


1、collectAsMap算子

功能

将二元组类型的RDD转换成一个Dict字典

特点:类似于collect,将RDD中元素的结果放入Driver内存中的一个字典中,数据量必须比较小

语法

def collectAsMap(self: RDD[Tuple[K,V]]) -> Dict[K,V]

举例

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

rdd_kv = sc.parallelize([('laoda', 11), ('laoer', 22), ('laosan', 33), ('laosi', 44)], numSlices=2)
print(rdd_kv.collectAsMap()) # {'laoda': 11, 'laoer': 22, 'laosan': 33, 'laosi': 44}

2、foreachParition算子

功能

对RDD每个分区的数据进行操作,将整个分区的数据加载到内存进行foreach处理,没有返回值

语法

def foreachParition(self: RDD[T] , f: Iterable[T] -> None) -> None
  • 优点:性能快、节省外部连接资源
  • 缺点:如果单个分区的数据量较大,容易出现内存溢出
  • 场景:
    • 数据量不是特别大,需要提高性能【将整个分区的数据放入内存】
    • 需要构建外部资源时【基于每个分区构建一份资源】

举例

#  使用foreachPartiion:对每个分区进行处理写入MySQL
def save_part_to_mysql(part):
    # 构建MySQL连接的语句。。。
    for i in part:
    # 利用MySQL连接将结果写入MySQL。。
    print(i)

# 将每个分区的数据直接写入MySQL,一个分区就构建一个连接
map_part_rdd.foreachPartition(lambda part: save_part_to_mysql(part))

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

相关文章:

  • PVE的优化与温度监控(二)—无法识别移动硬盘S.M.A.R.T信息的思考并解决
  • 淘宝商品评论爬虫:Java实现指南
  • IDEA算法的详细介绍及Python实现
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第二十集:制作专门渲染HUD的相机HUD Camera和画布HUD Canvas
  • Java安全—JNDI注入RMI服务LDAP服务JDK绕过
  • 【Vue】指令扩充(指令修饰符、样式绑定)
  • 第三讲 架构详解:“隐语”可信隐私计算开源框架
  • Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
  • SpringBoot 整合Mybatis时读取部分数据为空或日期为空
  • C#超简单实现人脸识别
  • 虚拟浏览器可以应对哪些浏览器安全威胁?
  • macOS 无法安装第三方app,启用任何来源的方法
  • 利用uniapp开发鸿蒙:运行到鸿蒙模拟器—踩坑合集
  • 高级编程之结构化代码
  • 知识中台在多语言客户中的应用
  • SOL链上的 Meme 生态发展:从文化到创新的融合#dapp开发#
  • Jenkins迁移数据目录
  • C语言中const char *字符进行切割实现
  • 基于matlab的语音信号去噪的App Designer 设计
  • Django数据迁移出错,解决raise NodeNotFoundError问题
  • Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
  • 独立资源池与共享资源池在云计算中各自的优势
  • 数据分析指标与术语
  • sysbench压测DM的高可用切换测试
  • 如何使用大模型进行智能质检?
  • Typora-PicGo-OSS对象存储