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 ...
随机推荐
- 数据结构 nxd(顺序对)
数据结构 nxd(顺序对) 问题描述 给定 n 个数 a1,a2,...,an,求满足条件的(i,j)数量: i<j 且 a[i]<a[j] ★数据输入输入第一行为一个正整数 n.第二行为 ...
- 20169219《linux内核原理与分析》第九周作业
网易云课堂学习 可执行程序的装载 可执行程序的产生过程:预处理-----> 编译 ----> 汇编 ----> 链接 以hello.c文件为例进行分析,编译步骤如下 vi hello ...
- [转]CentOS 7.3 安装MySQL
1.下载mysql源 yum -y install wget wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarc ...
- WPF之MVVM模式(1)
MVVM模式 一.MVVM模式概述 MVVM Pattern : Model\View\ViewModel View:视图.UI界面 ViewModel:ViewModel是对Model的封装,通过一 ...
- 扒一扒spring,dom4j实现模拟实现读取xml
今天leadr提出需求,原来公司项目中读取解析xml文件的代码效率太低,考虑切换一种xml为数据封装格式与读取方式以提高效率.我这灵机一动spring对bean的依赖注入就是读取xml文件,可以尝试扒 ...
- javascript js获取url及url参数解析
js获取url及url参数解析 一.获取url: var url=window.location.herf; 二.url参数解析: function GetRequest() { var url = ...
- 工作中用的cobbler命令行
在使用cobbler服务器,从pxe启动虚机的时候,经常用到的cobbler命令行 1.查看注册信息 cobbler system report --name=test25 2.注册信息 cobble ...
- git 命令总结(转)
结构图: <1> Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新建代码库 # 在当前目录新建 ...
- ABAP F4使用总结!!
PARAMETERS: p_werks LIKE t001l-werks , p_lgort LIKE t001l-lgort . SELECTION-SCREEN SKIP. ...
- Shell学习日记
if语句的使用 if语句的的格式: if [ expression ] expression 和方括号([ ])之间必须有空格,否则会有语法错误. then statments fi 或者: if [ ...