Spark常用算子讲解一
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常用算子讲解一相关推荐
- Spark常用算子讲解二
groupByKey groupByKey([numTasks])是数据分组操作,在一个由(K, V)键值对组成的数据集上调用,返回一个(K, Seq[V])对的数据集. 注意,如果要对每个键执行聚合 ...
- spark 常用算子
一.概述 算子 英文翻译为:Operator(简称op) 狭义:指从一个函数空间到另一个函数空间(或它自身)的映射. 广义:指从一个空间到另一个空间的映射 通俗理解:指事物(数据或函数)从一个状态到另 ...
- Spark常用函数讲解之键值RDD转换
摘要: RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ‚ 可以被缓存 ‚ 支持并行操作,一个RDD代表一个分区里的数据集 RDD有两种操作算子: Tran ...
- Spark 常用算子详解(转换算子、行动算子、控制算子)
Spark简介 Spark是专为大规模数据处理而设计的快速通用的计算引擎: Spark拥有Hadoop MapReduce所具有的优点,但是运行速度却比MapReduce有很大的提升,特别是在数据挖掘 ...
- Spark一路火花带闪电——Spark常用算子(参数及其返回值)探究
文章目录 转化算子 行动算子 转化算子 以数据Seq(1,2,3,3)为例子 map(f:T => U):RDD[U] 映射:将函数应用于RDD内的每个元素,将其返回值构成新的RDD rdd.m ...
- 2021年大数据Spark(十五):Spark Core的RDD常用算子
目录 常用算子 基本算子 分区操作函数算子 重分区函数算子 1).增加分区函数 2).减少分区函数 3).调整分区函数 聚合函数算子 Scala集合中的聚合函数 ...
- spark常用RDD算子 汇总(java和scala版本)
github: https://github.com/zhaikaishun/spark_tutorial spark RDD的算子挺多,有时候如何灵活的使用,该如何用一下子想不起来,这一段时间将s ...
- 【Spark】Spark的常用算子
Spark的常用算子 目录内容 Spark的常用算子 一.转换算子(Transformation) 二.行动算子(Action) 三.键值对算子(PairRDDFunctions) 四.文件系统算子( ...
- spark算子_Spark常用算子
Spark的算子分类: 从大方向说,Spark算子大致可以分为以下两类: (1)Transformation变换/转换算子:这种变换并不触发提交作业,这种算子是延迟执行的,也就是说从一个RDD转换生成 ...
最新文章
- Linux系统命令常用查询
- 802.11e (Quality of Service) : EDCA
- 绝了!一个妹子 rm -rf 把公司整个数据库删没了
- 分布式数据库一定会替代Oracle吗?
- MS SQL入门基础:系统数据库
- python mean dropna_小丸子踏入python之路:python_day05(用Pandas处理泰坦尼克船员获救数据titanic_train.csv)...
- Python 之父 Guido van Rossum 宣布
- 一步一个脚印学习WCF系列之WCF概要—生成元数据与代理(五)
- channel9.msdn.com 微软虚拟学院MVA系列视频课程
- 赛门铁克第三财季运营业绩稳步增长
- xcodebuild命令行打包发布ipa
- 如何简单快速地调整图片大小
- POI使用模板制作PPT,替换内容时原样式丢失问题的解决办法
- 如何在mysql验证非负数_MySQL数据库- 要求非负数
- 样本标准差与自由度 n-1 卡方分布关系的证明
- 23个经典营销创业案例,彻底颠覆你的营销思维
- Webpack 使用
- python IDLE设置了清屏插件,不起作用怎么办
- 别具一格的Flash时钟
- LiteOS-M内核
热门文章
- 读取Excel任务列表并显示在Outlook日历上
- js - 预加载+监听图片资源加载制作进度条
- nginx rewrite解决 jenkins error 404心得笔记
- Python标准库 - subprocess
- Opengl 好的文章和博客地址
- 断路器监控(Hystrix Dashboard)
- vs添加系统环境变量不识别_项目经验不重样!3个基于SpringBoot 的图片识别处理系统送给你...
- 几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】
- oracle x kglob,x$kglob x$kgllk x$kglpn
- android 多线程编程