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 ...
 
随机推荐
- struts学习记录
			
see also:http://blog.csdn.net/chenggil10/article/details/5965806#_Toc250472631 0.struts2每一个请求,都new一个 ...
 - SPOJ - BALNUM Balanced Numbers(数位dp+三进制状压)
			
Balanced Numbers Balanced numbers have been used by mathematicians for centuries. A positive integer ...
 - ubuntu - 14.04,该如何分区安装(初学者或不用它作为生成环境使用)?
			
ubuntu14.04,实际上现在它的安装很简单了,全图形界面,可以选择母语,但是实际使用起来如果分区不当,会让我们付出惨痛的代价,那么我们应该怎么分区安装呢? 如果我们并不是把它作为专业的服务器,或 ...
 - go语言实战教程之 后台管理页面统计功能开发(2)
			
上节内容介绍了后台管理页面统计功能开发(1),从功能介绍,到接口请求分析和归类,最后是代码设计.经过上节内容的介绍,已经将业务逻辑和开发逻辑解释清楚,本节内容侧重于编程代码实现具体的功能. 当日增长数 ...
 - xshell学习笔记
			
$0:当前Shell程序的文件名dirname $0,获取当前Shell程序的路径cd `dirname $0`,进入当前Shell程序的目录 echo "hvkjvk" > ...
 - Python字典基础知识补充
			
1.添加键值对 #!/usr/bin/env python i1 = {'k1':'cai' , 'k2':123} print(i1) i1['k3'] = 0 i1['k4'] = "r ...
 - Bash Shell 小试牛刀
			
一.终端打印 [root@cai ~]# echo welcome to bash! welcome to bash! [cairui@cai ~]$ echo 'welcome to bash!' ...
 - P2498 [SDOI2012]拯救小云公主
			
\(\color{#0066ff}{ 题目描述 }\) 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只bos ...
 - QueryTask,FindTask,IdentifyTask三种查询的区别
			
1:QueryTask是一个进行空间和属性查询的功能类,它可以在某个地图服务的某个子图层内进行查询,顺便需要提一下的是,QueryTask进行查询的地图服务并不必项加载到Map中进行显示.QueryT ...
 - maven部署Tomcat(出现空白页面,最终解决)