算子分为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. 《the art of software testing》 (1-2)章

    软件测试的心理学,重点是要认清: 测试时为发现错误而执行程序的过程 成功的测试:如果在测试某段程序时发现了错误,而且这些错误是可以修复的,就将这次合理设计并得到有效执行的测试称作是"成功的& ...

  2. CodeForces 384E Propagating tree (线段树+dfs)

    题意:题意很简单么,给定n个点,m个询问的无向树(1为根),每个点的权值,有两种操作, 第一种:1 x v,表示把 x 结点加上v,然后把 x 的的子结点加上 -v,再把 x 的子结点的子结点加上 - ...

  3. grep多条件和sed合并两行

    grep多条件,最简单的方式是使用正则表达式: egrep "条件1|条件2"   sed合并两行,将 1 2 3 4 合并成: 1 2 3 4 sed '$!N;s/\n/\t/ ...

  4. redis系列:集群

    1 简介 Redis 集群是Redis 的一个分布式实现,它是一个网状结构,每个节点都通过 TCP 连接跟其他每个节点连接.现在来看看Redis集群实现了哪些目标? 在1000个节点的时候仍能表现得很 ...

  5. python(二):可变参数

    python中的函数定义: def func(参数, 默认参数, 可变参数) ... 可变参数有两种定义方式: def func(*args): ... 调用方式为func(arg1, arg2, a ...

  6. Web Api 测试工具

    1.调用POST方法:使用Chrome流量器的PostMan工具. 前端模拟发送数据/调试的好工具:Chrome下的Postman-REST Client 下载地址 https://chrome.go ...

  7. Repeater控件的分隔线

    在Repeater控件中,很容易实现在行与行之间使用分隔线.因为此控件有内置的SeparatorTemplate模版.举个例子吧: 运行时,可以看到效果: 说句实在的话,Insus.NET做一条水平线 ...

  8. JavaAppArguments示例

    本实验要求编写一个程序,此程序从命令行接收多个数字,求和之后输出结果.一大难点是命令行参数都是字符串,必须先将其转化为数字,才能相加. 中心想法就是将求和数字转换为整型并依次相加. 程序流程图: pu ...

  9. 缩点【洛谷P2921】 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    [洛谷P2921] [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N< ...

  10. BA 认证

    IIBA-CBAP https://www.iiba.org/standards-and-resources/core-standard/ PMI-PBA https://www.pmi.org/ce ...