map

map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD,RDD之间的元素是一对一关系。

>>> x = sc.parallelize([1,2,3,4])
>>> y = x.map(lambda x:(x**3))
>>> y.collect()
[1, 8, 27, 64]

filter

对RDD元素进行过滤,返回一个新的数据集,由经过func函数后返回值为true的原元素组成。

>>> y = x.filter(lambda x:x>2)
>>> y.collect()
[3, 4]   

flatMap

类似于map,但是每一个输入元素会被映射为0到多个输入元素,RDD之间的元素是一对多关系。

>>> y = x.flatMap(lambda x:(x,x*100,x**2))
>>> y.collect()
[1, 100, 1, 2, 200, 4, 3, 300, 9, 4, 400, 16]

glom

返回一个RDD,它将每个分区中的所有元素合并到一个列表中。数据集切分

>>> a = sc.parallelize([1,2,3,4],2)
>//第二个参数2,表示数据集切分的份数(slices)。Spark将会在集群上为每一份数据起一个任务。
>>>> y = a.glom()
>>>> y.collect() [[1, 2], [3, 4]] 

mapPartitions

mapPartitions 函 数 获 取 到 每 个 分 区 的 迭 代器,在 函 数 中 通 过 这 个 分 区 整 体 的 迭 代 器 对整 个 分 区 的 元 素 进 行 操 作

>>> xx = sc.parallelize([1,2,3,4], 2)
>>> def f(iter): ...  yield sum(iter) ...
>>> yy = xx.mapPartitions(f)
>>> print 'xx原来分区信息:{0}'.format(xx.glom().collect()) xx原来分区信息:[[1, 2], [3, 4]]
>>> print 'xx经过f计算后的结果:{}'.format(yy.glom().collect()) xx经过f计算后的结果:[[3], [7]]

distinct

distinct将RDD中的元素进行去重操作

>>> res = sorted(sc.parallelize([1, 1, 1, 2, 3, 2, 3]).distinct().collect())
>>> print '去重后的结果:{}'.format(res) 去重后的结果:[1, 2, 3] 

union 并集

>>> rdd = sc.parallelize([1, 1, 2, 3])
>>> rdd1 = sc.parallelize([5, 3, 4, 6])
>>> print rdd.union(rdd1).collect()
[1, 1, 2, 3, 5, 3, 4, 6] 

intersection 交集

>>> rdd = sc.parallelize([1, 1, 2, 3])
>>> rdd1 = sc.parallelize([5, 3, 4, 6])
>>> print rdd.intersection(rdd1).collect()
[3]

cartesian

返回两个rdd的笛卡尔积。
笛卡尔积是什么不懂得可以参考下面的微博

>>> rdd = sc.parallelize([1, 2])
>>> rdd_1 = sc.parallelize([3,4])
>>> rdd.cartesian(rdd_1).collect()
[(1, 3), (1, 4), (2, 3), (2, 4)]  

groupBy

groupBy算子接收一个函数,这个函数返回的值作为key,然后通过这个key来对里面的元素进行分组。

val a = sc.parallelize(1 to 9, 3)
a.groupBy(x => { if (x % 2 == 0) "even" else "odd" }).collect
//返回的even或者odd字符串作为key来group RDD里面的值,
res42: Array[(String, Seq[Int])] = Array((even,ArrayBuffer(2, 4, 6, 8)), (odd,ArrayBuffer(1, 3, 5, 7, 9)))
val a = sc.parallelize(1 to 9, 3)
def myfunc(a: Int) : Int =
{a % 2
}
a.groupBy(myfunc).collect //同样的,返回的是0的时候,表示的是偶数值,返回的是1的时候表示的是奇数。
res3: Array[(Int, Seq[Int])] = Array((0,ArrayBuffer(2, 4, 6, 8)), (1,ArrayBuffer(1, 3, 5, 7, 9)))

Spark常用算子讲解一相关推荐

  1. Spark常用算子讲解二

    groupByKey groupByKey([numTasks])是数据分组操作,在一个由(K, V)键值对组成的数据集上调用,返回一个(K, Seq[V])对的数据集. 注意,如果要对每个键执行聚合 ...

  2. spark 常用算子

    一.概述 算子 英文翻译为:Operator(简称op) 狭义:指从一个函数空间到另一个函数空间(或它自身)的映射. 广义:指从一个空间到另一个空间的映射 通俗理解:指事物(数据或函数)从一个状态到另 ...

  3. Spark常用函数讲解之键值RDD转换

    摘要: RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ‚ 可以被缓存 ‚ 支持并行操作,一个RDD代表一个分区里的数据集 RDD有两种操作算子:         Tran ...

  4. Spark 常用算子详解(转换算子、行动算子、控制算子)

    Spark简介 Spark是专为大规模数据处理而设计的快速通用的计算引擎: Spark拥有Hadoop MapReduce所具有的优点,但是运行速度却比MapReduce有很大的提升,特别是在数据挖掘 ...

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

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

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

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

  7. spark常用RDD算子 汇总(java和scala版本)

    github: https://github.com/zhaikaishun/spark_tutorial  spark RDD的算子挺多,有时候如何灵活的使用,该如何用一下子想不起来,这一段时间将s ...

  8. 【Spark】Spark的常用算子

    Spark的常用算子 目录内容 Spark的常用算子 一.转换算子(Transformation) 二.行动算子(Action) 三.键值对算子(PairRDDFunctions) 四.文件系统算子( ...

  9. spark算子_Spark常用算子

    Spark的算子分类: 从大方向说,Spark算子大致可以分为以下两类: (1)Transformation变换/转换算子:这种变换并不触发提交作业,这种算子是延迟执行的,也就是说从一个RDD转换生成 ...

最新文章

  1. Linux系统命令常用查询
  2. 802.11e (Quality of Service) : EDCA
  3. 绝了!一个妹子 rm -rf 把公司整个数据库删没了
  4. 分布式数据库一定会替代Oracle吗?
  5. MS SQL入门基础:系统数据库
  6. python mean dropna_小丸子踏入python之路:python_day05(用Pandas处理泰坦尼克船员获救数据titanic_train.csv)...
  7. Python 之父 Guido van Rossum 宣布
  8. 一步一个脚印学习WCF系列之WCF概要—生成元数据与代理(五)
  9. channel9.msdn.com 微软虚拟学院MVA系列视频课程
  10. 赛门铁克第三财季运营业绩稳步增长
  11. xcodebuild命令行打包发布ipa
  12. 如何简单快速地调整图片大小
  13. POI使用模板制作PPT,替换内容时原样式丢失问题的解决办法
  14. 如何在mysql验证非负数_MySQL数据库- 要求非负数
  15. 样本标准差与自由度 n-1 卡方分布关系的证明
  16. 23个经典营销创业案例,彻底颠覆你的营销思维
  17. Webpack 使用
  18. python IDLE设置了清屏插件,不起作用怎么办
  19. 别具一格的Flash时钟
  20. LiteOS-M内核

热门文章

  1. 读取Excel任务列表并显示在Outlook日历上
  2. js - 预加载+监听图片资源加载制作进度条
  3. nginx rewrite解决 jenkins error 404心得笔记
  4. Python标准库 - subprocess
  5. Opengl 好的文章和博客地址
  6. 断路器监控(Hystrix Dashboard)
  7. vs添加系统环境变量不识别_项目经验不重样!3个基于SpringBoot 的图片识别处理系统送给你...
  8. 几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】
  9. oracle x kglob,x$kglob x$kgllk x$kglpn
  10. android 多线程编程