spark常用算子总结
算子分为value-transform, key-value-transform, action三种。f是输入给算子的函数,比如lambda x: x**2
常用算子:
keys: 取pair rdd的key部分
values: 取pair rdd的value部分
map: f作用于每个元素
flatMap: f作用于每个元素、输出list,然后对list压平
mapValues: f作用于pair rdd的value部分
flatMapValues: f作用于pair rdd的value部分,然后对list压平(即将list各元素分发配对到对应的key后)
mapPartitions: f作用于每个part,输入是iterator
mapParttitionsWithIndex: f作用于每个part,输入是(index,iterator)
glom: 将元素汇集成list
groupBy: f作用于每个元素并构造key,相同key的元素聚合成value_list
groupByKey: pair rdd的相同key的元素shuffle后,value部分聚合成value_list
repartition: 设定每个rdd的part个数,包含shuffle操作(即汇集有相同key的pair),操作前后会改变并行度
coalesce: 设定并降低part数量,不做shuffle操作
repartitionAndSortWithinPartitions: 设定每个rdd的part个数,目标part中按照key部分排序
sortByKey: 对pair rdd的所有元素shuffle后按key部分排序
cogroup: 两个pair rdd shuffle后相同key的元素聚合成value_iterator_list
reduce: f遍历元素list,须满足交换律和结合律
reduceByKey: pair rdd shuffle后相同key的元素聚合成value_list,f遍历value_list
filter: f作用于每个元素输出bool值,满足条件的元素会保留
collect: 汇集所有的元素
take:取数据集前n个元素
union: 合并两个rdd的元素集合(不去重)
intersection: 两个rdd的元素集合取交集
join: pair rdd shuffle后相同key的value部分inner join,即(k, v1) join (k, v2) -> (k, (v1, v2))
distinct: 遍历元素list去重
subtract: 两个rdd的元素集合取差集
count: 计数元素个数
countByKey: 计数有相同key的value的个数,返回hashmap结构
saveAsTextFile: rdd转化为文本文件并保存
foreach: f作用于每个元素,常用于print
broadcast: 将变量分发/广播到各个任务上,书写".value"取其值
经验:
broadcast变量时妥善使用数据结构,比如set类型查找很快。相对于用list任务运行快很多。
参考资料:
https://spark.apache.org/docs/latest/rdd-programming-guide.html
https://spark.apache.org/docs/latest/api/python/pyspark.html#pyspark.RDD
http://www.huaxiaozhuan.com/%E5%B7%A5%E5%85%B7/spark/chapters/02_rdd.html
spark sql: https://spark.apache.org/docs/latest/sql-programming-guide.html
spark常用算子总结的更多相关文章
- Spark常用算子-KeyValue数据类型的算子
package com.test; import java.util.ArrayList; import java.util.List; import java.util.Map; import or ...
- Spark常用算子-value数据类型的算子
package com.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; im ...
- java实现spark常用算子之Union
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- java实现spark常用算子之TakeSample
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- java实现spark常用算子之SortByKey
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spa ...
- java实现spark常用算子之Sample
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- java实现spark常用算子之SaveAsTextFile
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- java实现spark常用算子之Repartitions
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- java实现spark常用算子之Reduce
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
随机推荐
- Git 之 初使用
什么是Git? Git 是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发.Git ...
- PHP网站在Linux服务器上安全设置方案
本文总结了PHP网站在Linux服务器上一些安全设置(ps:还有一些设置给忘了),在<lnmp一键安装包>大多数参数已经包含,如果有什么更多的设置,大家一起讨论学习 PHP安全配置 1. ...
- labview中的移位寄存器、循环隧道,自动索引隧道的区别
对于循环结构(For 循环.while循环)而言,循环体内的数据域外部数据的传递是通过以下三种方式: 1.移位寄存器2.循环隧道3.自动索引隧道 第一.各自的区别.作用 循环隧道,就是把数据传入传出循 ...
- C 标签使用
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...
- Java开发环境的搭建-JDK的安装
一.下载 JDK是个免费的东东,所以不要去百度啥破解版了,直接去官网下载最新版本吧,比较安全, 下载地址 如下图所示 - 点击上图中的圈中部分,之后会下图的部分. 根据你的电脑系统是64位,还是32位 ...
- 企业sudo权限规划详解 (实测一个堆命令搞定)
简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系 ...
- OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力. 在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 ...
- 51nod 1350 斐波那契表示(递推+找规律)
传送门 题意 分析 我们发现该数列遵循下列规律: 1 1,2 1,2,2 1,2,2,2,3 1,2,2,2,3,2,3,3 我们令A[i]表示f[i]开始长为f[i-1]的i的最短表示和 那么得到A ...
- 简单配置webpack4 + vue
1.创建webpack4-vue文件夹 mkdir webpack4-vue && cd webpack4-vue 2.初始化npm npm init -y 3.安装相关依赖 npm ...
- 多层mvc,thikphp进阶
程序员,是一种生活态度. 我尽忠恪守,我努力进取,热衷于解决问题,希望得到同样的回报. 我遇到问题,将所有的力量用在解决问题,而不是抱怨,推卸责任上. ------------------------ ...