码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【算子1】spark(三):spark core:trans算子中value类型的算子使用说明


    通过了解spark整体的算子,知道spark的RDD能够提供哪些数据处理的功能,以及掌握如何使用。

    文章目录

      • 1. 算子分类概述
      • 2. 常见算子使用举例
        • map
        • mapPartitions(func)
        • glom
        • distinct()
        • coalesce(numPartitions)
        • coalesce和repartition的区别

    在 Spark Core中,RDD支持 2 种操作:

    • transformation算子:从一个已知的 RDD 中创建出来一个新的 RDD 。
    • action算子:触发SparkContext提交Job作业

    算子整体上分为Value类型和Key-Value类型,
    value类型的算子针对处理value类型的数据,而key-value类型用于处理数据是类型的。

    接下来的篇章我们会介绍不同类型的算子,本文介绍trans算子中value类型的算子使用。

    1. 算子分类概述

    1、 (输入与输出分区)一对一

    map(func): 一条数据调用一次
    mapPartitions(func):功能类似于map,但是一个分区的数据调用一次
    glom(func):将每一个分区的数据形成一个数组
    sortBy(func,[ascending], [numTasks]) :根据处理后的数据比较结果排序,默认为正序。
    

    2、一对多

    flatMap(func) :对每一条数据操作,每次都返回一个序列
    

    3、(输入分区与输出分区)多对一型

    union(otherDataset): 源RDD和参数RDD求并集后返回一个新的RDD
    subtract(otherDataset):取差,去除两个RDD中相同的元素,不同的源RDD将保留下来
    intersection(otherDataset):交集后返回一个新的RDD
    zip(otherDataset):将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,否则会抛出异常。
    

    4、(输入分区与输出分区)多对多

    grouBy(func):分组,按照传入函数的返回值进行分组。将相同返回值的对应值放入一个迭代器。
    

    5、输出是输入的子集

    filter(func):根据func的逻辑去过滤数据,func返回为true的元素留下 	
    distinct([numTasks])):去重,经历了shuffle。默认情况下并行度为8。可选参数:可以设置来改变分区数,即储存的文件数量。	
    sample(withReplacement, fraction, seed):	withReplacement:抽取的元素是否放回;true:放回
    											fraction:每个元素被选择的概率(也可所有元素抽取的比例)
    											seed:用于指定随机数生成器种子
    

    6、Cache型

    cache()
    persist算子
    

     

    2. 常见算子使用举例

    map

    在这里插入图片描述
     

    mapPartitions(func)

    在这里插入图片描述
     

    glom

    在这里插入图片描述
     

    distinct()

    在这里插入图片描述

     

    coalesce(numPartitions)

    缩减分区数,用于大数据集过滤后,提高小数据集的执行效率。

    在这里插入图片描述
     

    coalesce和repartition的区别

    coalesce重新分区,可以选择是否进行shuffle过程。由参数shuffle: Boolean = false/true决定。
    
    repartition实际上是调用的coalesce,默认是进行shuffle的。
    源码如下:
    def repartition(numPartitions: Int)(implicit ord: Ordering[T] = null): RDD[T] = withScope {
      coalesce(numPartitions, shuffle = true)
    }
    

     

  • 相关阅读:
    【历史上的今天】7 月 28 日:Lua 首次在线上运行;苹果停产所有非 iOS 的 iPod;戴尔工作站 400 推出
    [6]辨析云计算交付模型IaaS PaaS SaaS和云部署模型
    【计算机网络黑皮书】传输层
    demo1-csa(从初阶到大牛)
    FFmpeg引入x264扩展
    肌酸激酶同工酶(CKMB)抗体——博迈伦
    Controller统一异常处理和yaml配置
    信息安全管理与评估赛题解析-应急响应(含环境)
    2-(脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别)、( 什么是qps,tps,并发量,pv,uv)、(什么是接口幂等性问题,如何解决?)
    msql 查询json类型数据
  • 原文地址:https://blog.csdn.net/hiliang521/article/details/127038763
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号