Spark一路火花带闪电——Pair RDD常用算子(参数及其返回值)探究

2023-10-28

文章目录

转化算子

以键值对集合{(1,2),(3,4),(3,6)}为例
RDD[U,T]注意下面的函数,对应U和T


  • reduceByKey(f:(T,T) => T):RDD[U,T]

合并具有相同值的键
rdd.reduceByKey((x,y)=>x+y)
>>(1,2)(3,10)


  • groupByKey():RDD[Tuple(T, Iterable [U])]

对具有相同键的值进行分组
rdd.groupByKey()
>> {(1,[2]),(3,[4,6])}输出为元组


  • combineByKey(createCombiner :T => C, mergeValue :(C,T)=>C, mergeCombiners :(C,C)=>C, numPartitions : Int):RDD[Tuple[K, C]]

和aggregate()函数相似:

  1. zeroValue:C -------- createCombiner :T => C,
  2. SepOp(C,T)=>C -------- mergeValue :(C,T)=>C,
  3. comOp:(C,C)=>C -------- mergeCombiners :(C,C)=>C
    createCombiner: T => C ,这个函数把当前的值作为参数,此时我们可以对其做些附加操作(类型转换)并把它返回 (这一步类似于初始化操作)
    mergeValue: (C,T)=>C,该函数把元素T合并到之前的元素C(createCombiner)上 (这个操作在每个分区内进行)
    mergeCombiners: (C, C) => C,该函数把2个元素C合并 (这个操作在不同分区间进行)
	type Ctype=(Int,Int)
    val s=rdd.combineByKey(x=>(x,1),(c:Ctype, x)=>(c._1+x,c._2+1),
      (c:Ctype,d:Ctype)=>(c._1+d._1,c._2+d._2))
    s.foreach(println(_))

>>>
(1,(2,1))
(3,(10,2))

  • mapValues(f:T => K):RDD[U,K]

对RDD的每个值T应用一个函数,不改变键。
rdd.mapValues(x => x+1)
>>{(1,3),(3,5),(3,7)}


  • flatMapValues(f:T => K):RDD[U,K]

与mapValues不同的是,传入的函数返回的是迭代器。
rdd.flatMapValues(x=>(x to 5))
>>{(1,2),(3,4),(1,3),(3,5),(1,4),(1,5)}




以两个键值对集合{(1,2),(3,4),(3,6)}和{(3,9)}为例
以RDD[U,T]为初始RDD.


  • subtractByKey(other:RDD[U,K]):RDD[U,T]

删掉两个rdd里键相同的元素(不管值是否相同,也不管值的类型是否相同)。
rdd.subtractByKey(rdd2)
>>{(1,2)}


  • join(other:RDD[U,K]):RDD[U,Tuple(T,K)]

合并两个rdd里键相同的元素(不管值是否相同,也不管值的类型是否相同)。
rdd.join(rdd2)
>>{(3,(4,9)),(3,(6,9))}


  • rightOuterJoin(other:RDD[U,K]):RDD[U,(option(T),K)]

右外连接操作(不管值是否相同,也不管值的类型是否相同)。
rdd.rightOuterJoin(rdd2)
>>{(3,(Some(4),9)),(3,(Some(6),9))}


  • leftOuterJoin(other:RDD[U,K]):RDD[U,(T, option(K))]

左外连接操作(不管值是否相同,也不管值的类型是否相同)。
rdd. leftOuterJoin(rdd2)
>>{(1,(2,None)),(3,(4,Some(9))),(3,(6,Some(9)))}


  • cogroup(other:RDD[U,K]):RDD[U,(Iterable(T),Iterable(K))]

按键数据分组。
rdd.cogroup(rdd2)
>>(1,(CompactBuffer(2),CompactBuffer()))(3,(CompactBuffer(4, 6),CompactBuffer(9)))

行动算子

以键值对集合{(1,2),(3,4),(3,6)}为例
RDD[U,T]注意下面的函数,对应U和T


  • countByValue():Map[U,Long]

按键来计数。
rdd.countByKey()
>>(1,1),(3,2)


  • collectAsMap():Map(U,T)

键结果以映射表的形式返回,以便查询。


  • lookup(key:U):Seq[T]

返回给定的键所对应的所有值。
rdd.lookup(3)
>>4,6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark一路火花带闪电——Pair RDD常用算子(参数及其返回值)探究 的相关文章

  • Redis——初识Redis

    Redis简介 Redis的数据结构致力于帮助用户解决问题 而不是像关系型数据库那样 要求用户扭曲问题来适应数据库 除此之外 通过复制 持久化和客户端分片 client side sharding 等特性 用户可以很方便的将Redis扩展成
  • 【redis】Redis cluster是AP架构还是CP架构?

    最近刚好在看CAP理论 加上之前分析的redis cluster 就在想redis的cluster是什么模式的 AP还是CP 首先还是简单讲下CAP 具体的可见 CAP分别是 强一致性 Consistency 可用性 Availabilit
  • Azkaban的囚徒——Azkaban运行模式和流

    文章目录 Azkaban运行模式 Azkaban运行 Azkaban 流 Job Dependency Azkaban运行模式 在3 x版本里 提供了3种运行模式 the stand alone solo server mode stand
  • Dubbo——快速启动(2)

    快速启动 Dubbo 采用全 Spring 配置方式 透明化接入应用 对应用没有任何 API 侵入 只需用 Spring 加载 Dubbo 的配置即可 Dubbo 基于 Spring 的 Schema 扩展 进行加载 mvn
  • Distributed Database System —— Multi-raft协议介绍

    文章目录 Multi Raft协议 Multi Raft需要解决的问题 Multi Raft实现细节 Cockroach Multi Raft Raft Consistency of Range Replicas Range Leaders
  • Spark一路火花带闪电——Pair RDD常用算子(参数及其返回值)探究

    文章目录 转化算子 行动算子 转化算子 以键值对集合 1 2 3 4 3 6 为例 RDD U T 注意下面的函数 对应U和T reduceByKey f T T gt T RDD U T 合并具有相同值的键 rdd reduceByKey
  • Java大数据基础——day01

    大家好 自我介绍一下 我是接下来带大家超神的建哥 睁开大眼 看好了联系方式 18935466019 联系邮箱 zhangjianios 163 com QQ 343438569 在接下来的时间 会带大家走入新的旅程 Java 学习大数据之前
  • windows安装docker desktop

    windows安装docker desktop 前言 一 docker desktop 是什么 二 安装步骤 1 下载 2 安装 总结 前言 这里针对windows 10 家庭中文版 其他版本部分步骤可跳过 一 docker desktop
  • Hadoop是小象——YARN / Split&Block

    了解Hadoop架构 Hadoop可运行于一般的商用服务器上 具有高容错 高可靠性 高扩展性等特点 特别适合写一次 读多次的场景 其架构如下 HDFS 分布式文件存储 可靠性由心跳机制和冗余提供 YARN 分布式资源管理 MapReduce
  • 基于Spring Cloud Alibaba 分布式微服务高并发数据平台化(中台)思想+多租户saas企业开发架构技术选型和设计方案

    基于Spring Cloud Alibaba 分布式微服务高并发数据平台化 中台 思想 多租户saas设计的企业开发架构 支持源码二次开发 支持其他业务系统集成 集中式应用权限管理 支持拓展其他任意子项目 架构源码可以加我WX haiwab
  • 云计算虚拟化技术与开发-------虚拟化技术应用第一章内容(虚拟化技术概念、虚拟化特征、虚拟化目的、半虚拟化和全虚拟化特点和区别、虚拟化实现的三种结构的特点和区别)

    目录 虚拟化技术第一章主要内容 虚拟化技术的概念 虚拟化的特征 虚拟化的目的 虚拟化与云计算的关系 半虚拟化和全虚拟化的特点和区别 虚拟化实现的三种结构的特点和区别 虚拟化技术第一章主要内容 虚拟化技术的概念 虚拟化 Virtualizat
  • 深入ZooKeeper——ZooKeeper原语和架构

    ZooKeeper基础 设计一个用于协作需求的服务的方法往往是 提供原语列表 暴露出每个原语的实例化调用方法 并直接控制这些实例 这种设计存在一些重大的缺陷 首先 我们要么预先提出一份详尽的原语列表 要么提供API的扩展 以便引入新的原语
  • 伸缩自如的ElasticSearch——通过bboss操作和访问elasticsearch模式

    文章目录 ClientUtil 加载配置文件中的dsl来实现对es的操作模式 所有不依赖dsl的功能 或直接接收dsl模式 基本功能 配置es查询dsl 文档批量创建或者修改 http api 查询dsl动态脚本语法规范 配置springb
  • 从分层架构到微服务架构(五)之服务化架构

    从分层架构到微服务架构 是一系列介绍 Fundamentals of Software Architecture 中提到的8种架构模式的文章 这里不会事无巨细地介绍所有的细节 而是会挑选其中关键内容 更多详情请阅读原书 往期精彩 从分层架构
  • Hadoop是小象——Hadoop集群安装配置

    文章目录 所需软件 集群网络配置 集群SSH免密登陆设置 Hadoop安装配置 所需软件 Linux所需软件包括 JavaTM1 5 x 必须安装 建议选择Sun公司发行的Java版本 以前安装过 ssh 必须安装并且保证 sshd一直运行
  • Apache架构师都遵循的30条设计原则

    Srinath 通过不懈的努力最终总结出了 30 条架构原则 他主张架构师的角色应该由开发团队本身去扮演 而不是专门有个架构师团队或部门 Srinath 认为架构师应该扮演的角色是一个引导者 讨论发起者 花草修建者 而不是定义者和构建者 S
  • Elasticsearch使用教程

    下载ES elasticsearch的下载地址 https www elastic co cn downloads elasticsearch ik分词器的下载地址 https github com medcl elasticsearch
  • 应用使用Druid连接池经常性断链问题分析

    前段时间有应用使用Druid连接池经常的提示断链报错 整个问题排查分析过程很有意思 这里将Druid连接池 数据库层以及负载均衡层的配置分析下 记录整个问题的分析过程 同时梳理下Druid连接池的配置和连接保活及回收机制 1 问题背景 应用
  • Distributed System Transaction —— 2PL

    文章目录 2PL 并发控制常见的方式有2PL MVCC等方式 2PL 两阶段锁 two phase locking 是用来解决多线程之间的竞态条件的 其算法非常简单 数据库中的每一个数据对象都有两种锁 S hared lock 和 e X
  • 什么是分布式架构

    一 分布式架构定义 什么是分布式架构 分布式系统 distributed system 是建立在网络之上的软件系统 内聚性 是指每一个数据库分布节点高度自治 有本地的数据库管理系统 透明性 是指每一个数据库分布节点对用户的应用来说都是透明的

随机推荐

  • 福禄克网线测试仪的使用方法

    福禄克网线测试仪是对铜缆的1 2 3 4 5 6 7 8导线逐根 或逐对 进行测试的工具 它可以测出的主要故障有 开路 短路 反接 错对和串绕 开路故障 开路是指铜缆中一根或多根导线中间有断开的地方 这通常是由机械外力造成 线对中短路故障
  • 基于排队论模型的收银台服务系统的分析及可视化设计

    基于排队论模型的收银台服务系统的分析及可视化设计 一 收款台服务 1 1问题描述 1 2计算 1 3输入 1 4GUI界面输出与程序封装 1 4 1开始界面 1 4 2点击直接输入参数 1 4 2 1输入参数 点击确定 在这里插入图片描述
  • 从零开发一款ChatGPT VSCode插件

    本文作者是360奇舞团开发工程师 引言 OpenAI发布了ChatGPT 就像是给平静许久的互联网湖面上扔了一颗重磅炸弹 刹那间所有人都在追捧学习它 究其原因 它其实是一款真正意义上的人工智能对话机器人 它使用了深度学习技术 通过大量的训练
  • 那些年我在CSDN追过的安全白帽师傅,respect

    2019年7月 我来到了一个陌生的专业 网络空间安全专业 作为一个长期以Python数据挖掘和NLP方向为主的学生 突然换大方向 去从事系统安全和逆向分析的研究 还是挺难的 这两年的过程也极其艰辛 依稀记得 换专业当天我下定决心 希望利用未
  • 【算法7】编写算法实现带头结点的单链表就地逆置即空间复杂度O(1)

    方法一 利用头插法实现链表的逆置 算法思想 1 定义两个LNode 指针p 和r LNode p 用于遍历整个单链表 LNode r 指向p的后继结点防止断链 2 将p标记第一个结点 r标记p所指结点后继 3 依次将后续结点头插法插入头结点
  • maven 命令合集

    文章目录 安装到本地库 安装到私服 手动下载jar 手动下载jar 报错 手动下载 jar 使用指定的插件版本 使用maven help plugin描述插件 从而获得插件信息 查看冲突 jar 包 Effective Pom effect
  • 大家好,我给大家介绍一下,这是我的Linux故障排查思路

    我发现Linux系统在启动过程中会出现一些故障 导致系统无法正常启动 我在这里写了几个应用单用户模式 GRUB命令操作 Linux救援模式的故障修复案例帮助大家了解此类问题的解决 一 单用户模式 Linux系统提供了单用户模式 类似Wind
  • SpringBoot bean解析之refresh方法(五)

    这里主要着重看看refresh方法调用的finishBeanFactoryInitialization 初始化所有剩下的单例bean Finish the initialization of this context s bean fact
  • Maven(在java中的使用)

    在Javaweb开发中 需要使用大量的jar包 我们手动去导入 如何能够让一个东西自动帮我导入和配置这个jar包 由此 Maven诞生了 5 1Maven 项目架构管理工具 我们目前用来就是方便导入jar包的 Maven的核心思想 约定大于
  • 公司规定所有接口都用 POST 请求,这是为什么?

    最近在逛知乎的时候发现一个有趣的问题 公司规定所有接口都用 post 请求 这是为什么 原问题 zhihu com question 336797348 看到这个问题的时候其实我也挺有感触的 因为我也曾经这样问过我自己 在上上一家公司的时候
  • stackgan

    使用pix2pix网络进行stackgan的叠加 pix2pix来自github上一位日本同学的代码 stackgan https github com hanzhanggit StackGAN Pytorch blob master co
  • LC-6248. 统计中位数为 K 的子数组(回文:中心扩散+哈希、等价转换)【周赛321】

    6248 统计中位数为 K 的子数组 难度困难15 给你一个长度为 n 的数组 nums 该数组由从 1 到 n 的 不同 整数组成 另给你一个正整数 k 统计并返回 num 中的 中位数 等于 k 的非空子数组的数目 注意 数组的中位数是
  • 使用Matlab实现模拟退火算法求解函数极值问题

    使用Matlab实现模拟退火算法求解函数极值问题 模拟退火算法 Simulated Annealing 是一种启发式优化算法 常用于求解函数的极值问题 该算法的灵感来源于固体退火过程中的原子运动规律 通过模拟物质的退火过程来搜索最优解 在本
  • java代码走查审查规范

    分类 重要性 检查项 备注 命名 重要 命名规则是否与所采用的规范保持一致 成员变量 方法参数等需要使用首字母小写 其余单词首字母大写的命名方式 禁止使用下划线 数字等方式命名不要出现局部变量 成员变量大写字母开头等问题 一般 是否遵循了最
  • 计算机图形学games101作业二 ---- 三角形光栅化 超采样抗锯齿 黑边处理

    games101作业二 三角形光栅化 超采样抗锯齿 黑边处理 本文是在学习计算机图形学时根据课程作业进行整理的笔记 有错误请指出 如果是同课程 请勿复制粘贴 谢谢 文章目录 CG homework1 0 本次作业 实现函数及简单描述 详细
  • WSL通过WINDOWS走代理

    WSL如何与WINDOWS端口通信 由于项目需求想让WSL和桌面的端口通信 看了网上大量的帖子很是糟乱 浪费了大量的时间 于是本人写此博客来帮助到有需要的人 软件配置 勾选软件的局域网的连接 开启MUX多路复用 需要通信的端口信息如下图所示
  • centos8解决yum安装报错

    Error Failed to download metadata for repo appstream Cannot prepare internal mirrorlist No URLs in mirrorlist 在学习使用 dock
  • SQL基础知识整理

    SQL基础知识整理 常见的SQL面试题 经典50题 三 50道面试题 2 汇总统计分组分析 3 复杂查询 sql面试题 topN问题 4 多表查询 面试题类型总结 这类题目属于行列如何互换 解题思路如下 其他面试题 SQL基础知识整理 se
  • html点击收缩展开菜单栏,jquery实现可点击伸缩与展开的菜单效果代码

    本文实例讲述了jquery实现可点击伸缩与展开的菜单效果代码 分享给大家供大家参考 具体如下 这是一款jquery实现的点击伸缩与展开的菜单代码 操作方式大家都知道吧 点击一下展开二级菜单的内容 再次点击则合拢 很经典的折叠菜单 运行效果截
  • Spark一路火花带闪电——Pair RDD常用算子(参数及其返回值)探究

    文章目录 转化算子 行动算子 转化算子 以键值对集合 1 2 3 4 3 6 为例 RDD U T 注意下面的函数 对应U和T reduceByKey f T T gt T RDD U T 合并具有相同值的键 rdd reduceByKey