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 ...
随机推荐
- 原型模式--其实就是考察clone
http://blog.csdn.net/zhengzhb/article/details/7393528
- ubuntu配置静态路由
1. #ifconfig 注意 eth0为你要配置的interfase 2. #vi /etc/network/interfaces # This file describes the network ...
- Spring Boot 学习系列(02)—使用热部署,提升开发效
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 开发调试很简单 热部署的使用非常简单,但能极大的提高我们的开发效率,像传统的web应用,我们修改后需要重新编 ...
- js 操作html dom
author:冯永贤(Tony Feng,鸡鸣星),文章整合:internet <HTML DOM> 一:js能够改变HTML DOM 里面的什么内容 JavaScript 能够改变页面中 ...
- [CentOS7] 安装sogou输入法
CentOS7 下的默认输入法不是很好用,于是还是用sogou输入法 由于官网只有Ubuntu版本的sogou输入法安装包,于是先下载下来再说,博主用的版本在这里(密:ph13): 接下来解压data ...
- console的使用
一.显示信息的命令 console.log("normal"); // 用于输出普通信息 console.info("information"); // 用于输 ...
- Mole and Abandoned Mine
Mole and Abandoned Mine n点m条边的无向图,删除第i条边花费c[i],问1到n只有一条路径时所需要的最小花费? \(2\le n\le 15\) . 我又A掉了一道zzs的题啦 ...
- P1979 华容道
题意:$n*m$棋盘上$n*m-1$颗棋子,有且只有一个格子为空白格子,每个棋子大小$1*1$ 有些棋子可以移动,而有些棋子固定,任何与空白的格子相邻(有公共的边)的格子上的棋子都可以移动到空白格子上 ...
- CF796A Buying A House 模拟
Zane the wizard had never loved anyone before, until he fell in love with a girl, whose name remains ...
- python 中文路径问题
Python直接读取中文路径的文件时失败,可做如下处理: inpath = 'D:/work/yuanxx/在线导航/驾车导航/walk_log/20130619_172355.txt' uipath ...