文章目录

  • 转化算子
  • 行动算子

转化算子

以键值对集合{(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

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

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

    文章目录 转化算子 行动算子 转化算子 以数据Seq(1,2,3,3)为例子 map(f:T => U):RDD[U] 映射:将函数应用于RDD内的每个元素,将其返回值构成新的RDD rdd.m ...

  2. Spark一路火花带闪电——Spark底层原理介绍

    文章目录 Spark计算引擎原理 1.1 术语 1.1.1 Application:Spark应用程序 1.1.2 Driver:驱动程序 1.1.3 Cluster Manager:资源管理器 1. ...

  3. Spark一路火花带闪电——认识Spark

    文章目录 认识Apache Spark 1.1 Spark是一个软件栈 1.1.1 Spark Core 1.1.2 Spark SQL 1.1.3 Spark Streaming 1.1.4 MLl ...

  4. Spark一路火花带闪电——Spark踩坑记

    文章目录 坑有哪些? 踩坑记:版本号一定要正确!!!JDK一定要匹配. 使用idea打包maven项目 坑有哪些? ClassNotFoundException:表明maven依赖和服务器中的版本不匹 ...

  5. Spark一路火花带闪电——Accumulator Broadcast

    文章目录 Accumulator累加器 Accumulator简介 陷阱及解决办法 Broadcast广播变量 Accumulator累加器 Accumulator简介 Accumulator是spa ...

  6. 手拿菜刀砍电线,一路火花带闪电,神经病人思维广,弱智孩子欢乐多!

    150条经典装逼语录,签名专用 ~~~手拿菜刀砍电线,一路火花带闪电~~~(转) 2009年07月26日 星期日 12:10 1.<卖火柴的小女孩>这篇文章主要写得是:一个小女孩五次擦火柴 ...

  7. 程序猿菜鸟打怪升级—一路火花带闪电

    文章目录 一. 昨夜西风凋碧树,独上高楼,望尽天涯路 二. 衣带渐宽终不悔,为伊消得人憔悴 三.众里寻他千百度,蓦然回首,那人却在,灯火阑珊处 [告别平庸的9个方法] 各位小伙伴,大家好!我是猿人谷, ...

  8. C#调用存储过程带输出参数或返回值分类(转)

    C#调用存储过程带输出参数或返回值 分类: Asp.net MSSQL2014-05-26 14:02 330人阅读 评论(0) 收藏 举报 [csharp] view plaincopyprint? ...

  9. 2021年大数据Spark(十五):Spark Core的RDD常用算子

    目录 常用算子 基本算子 分区操作函数算子 重分区函数算子 1).增加分区函数 2).减少分区函数 3).调整分区函数 ​​​​​​​聚合函数算子 ​​​​​​​Scala集合中的聚合函数 ​​​​​ ...

最新文章

  1. 【camera】4.图像的颜色空间
  2. SPU、SKU、ARPU是什么,我来记录一下我的理解
  3. 使用Powerdesigner的逆向工程生成PDM(主要是注释可以放进去)
  4. 项目中查询数据和模糊查询
  5. HttpClient4.3.x的连接管理
  6. ClickHouse 为何如此快?
  7. rocketmq稳定可靠性测试
  8. javap 指令集 (转)
  9. iOS开发经验总结(一)
  10. php手机网页_使用PHPCMS搭建wap手机网站
  11. 2FSK在瑞利衰落信道下的相干与非相干解调误码率-MATLAB基带仿真
  12. 成功注册一个谷歌账号
  13. 二进制转十进制c++语言数组,C++实现读入二进制数并转换为十进制输出
  14. 微信公众号的Api 一些说明 关于 WeixinJSBridge API
  15. Edman降解蛋白测序法的基本步骤解析:耦合和裂解过程
  16. 推进智慧工地建设,智慧工地是什么?建筑工地人必看!
  17. oracle将表导入到表空间,关于ORALCE一个表空间的数据导入到另一个表空间的方法(原创)...
  18. 命名空间又称名字空间,英文名:Namespace
  19. Charles ——抓包工具安装与(Charles与浏览器)配置(Python爬虫必备神器)
  20. data.frame中的NA值怎么替换成0 把na变为0 把na变为想要的数 改变na 是否为na is.na()是否为null is.null() is.null() 删除去掉NA的行

热门文章

  1. 炒菜机器人康名牌_机器人帮炒菜,九阳、美的产品各有何本领?
  2. 减一天_减腹部小运动,做完后一天瘦一斤,还你健康还你美丽
  3. 【图片】职业规划参考
  4. 1029 : 三角形判定
  5. 微信小程序控制树莓派(一)
  6. python3怎么使用qstring_QString 的用法
  7. 【旅游攻略】安化云台山风景区的童心之旅
  8. n除以2的余数用计算机算法,算法入门
  9. 服务器芯片 128核心,无惧 X86,Ampere 公布 128核ARM 处理器
  10. 货运APP开发面临市场的考验