算子分为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常用算子总结的更多相关文章

  1. Spark常用算子-KeyValue数据类型的算子

    package com.test; import java.util.ArrayList; import java.util.List; import java.util.Map; import or ...

  2. Spark常用算子-value数据类型的算子

    package com.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; im ...

  3. java实现spark常用算子之Union

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  4. java实现spark常用算子之TakeSample

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  5. java实现spark常用算子之SortByKey

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spa ...

  6. java实现spark常用算子之Sample

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  7. java实现spark常用算子之SaveAsTextFile

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  8. java实现spark常用算子之Repartitions

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  9. java实现spark常用算子之Reduce

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

随机推荐

  1. swing JCheckBox 更换复选框样式

    Java Swing - 如何自定义JCheckBox复选标记图标 摘自 https://www.w3cschool.cn/java/codedemo-484050311.html import ja ...

  2. C++中的内存重叠问题

    内存重叠,直到做到一个笔试题才知道了什么是内存重叠.先上题目吧,是一个淘宝的笔试题,当时有点懵,不知道这个名词是啥子意思. 题目:补充下面函数代码: 如果两段内存重叠,用memcpy函数可能会导致行为 ...

  3. CodeForces 703C Chris and Road (简单几何)

    题意:有一个n边形的汽车向以速度v向x轴负方向移动,给出零时时其n个点的坐标.并且有一个人在(0,0)点,可以以最大速度u通过w宽的马路,到达(0,w)点.现在要求人不能碰到汽车,人可以自己调节速度. ...

  4. MATLAB数字图像处理(一)基础操作和傅立叶变换

    数字图像处理是一门集计算机科学.光学.数学.物理学等多学科的综合科学.随着计算机科学的发展,数字图像处理技术取得了巨大的进展,呈现出强大的生命力,已经在多种领域取得了大量的应用,推动了社会的发展.其中 ...

  5. ipa包使用命令上传fir.im或者蒲公英

    我们的工程做了自动打包处理,但是每次打完ipa后只是放置于一个共享盘或者本地,为了方便测试,每次都要手动上传上传fir或者蒲公英,比较麻烦.所以研究了一下怎么能在打完包后直接脚本上传到上传fir或者蒲 ...

  6. 动态绑数据(Repeater控件HeaderTemplate和ItemTemplate)

    前几天,Insus.NET有写了<动态绑数据(GridView控件Header和ItemTemplate)>http://www.cnblogs.com/insus/p/3303192.h ...

  7. C++时间操作的汇总

    . 获取当前时间 time_t cur_time = time(NULL); . 把整数时间转为字符串时间 string GetStringTime(const time_t time) { stru ...

  8. 阿里开源混沌工程工具 ChaosBlade

    https://github.com/chaosblade-io/chaosblade

  9. 以证书的方式登录ssh

    常常要登录多台Linux服务器,过去在Windows下使用SecureCRT,比较省心,配置还可以放到云盘,实时同步.现在改用MAC貌似就没有那么好用的东西了,每次ssh命令登录都需要输入密码,很烦. ...

  10. C:简单的学生信息处理程序实现

    描述 在一个学生信息处理程序中,要求实现一个代表学生的类,并且所有成员变量都应该是私有的. (注:评测系统无法自动判断变量是否私有.我们会在结束之后统一对作业进行检查,请同学们严格按照题目要求完成,否 ...