Spark学习笔记(一)----spark算子操作
1.前言
最近在帮公司了解大数据方面的技术,涉及到spark的相关内容,所以想写个笔记记录一下。目前用到的时spark2.1.0的版本,仅供学习参考。
2.正文
2.1spark官网算子的分类
spark官网上面有对于算子的描述,但是spark对于算子的分类粒度较粗,大致为transformations和actions,其中的transformations是从一个RDD转换操作,结果仍然为RDD;而Actions则是从RDD操作变成非RDD结果。其中的transformations是由Actions触发的,即代码走到transformations的时候,并不会立即进行计算操作,而是实际等到需要action结果的时候才触发。
- 一.Transformations
- map算子操作
- flatMap算子操作
- ..算子操作
- 二.Actions
- ..算子操作
以上的分类,是按照ADD实际操作的结果来划分的,粒度相对而言较粗,实际在使用RDDapi的时候,可以将transformation的再细分,实际操作的时候,会涉及到算子的值类型是Value类型或者是Key-Value类型的两类。而且根据操作后返回的RDD内分区与输入的RDD分区,也可以由一个对应关系,所以更详细的划分类型为:
- Transformations
- Value类型的transformations算子
- 输入RDD分区与输出RDD分区一对一类型
- 1.map算子
- 2.flatMap算子
- 3.mapPartitions算子
- 4.glom算子
- 输入RDD分区与输出RDD分区多对一类型
- 5.union算子
- 6.cartesian算子
- 输入RDD分区是输出RDD分区子集类型
- 7.filter算子
- 8.distinct算子
- 9.subtract算子
- 10.sample算子
- 11.takeSample算子
- Cache类型
- 12.cache算子
- 13.persist算子
- Key-Value类型的transformations算子
- 输入RDD分区与输出RDD分区多对多类型
- 14.groupByKey算子
- 输入RDD分区与输出RDD分区一对一类型
- 15.mapValues算子
- 对单个或两个RDD聚集
- 16.combineByKey算子
- 17.reduceByKey算子
- 18.partitionBy算子
- 19.cogroup算子
- 连接
- 20.join算子
- 21.leftOutJoin和rightOutJoin算子
- Actions
- 无输出
- 22.foreach算子
- HDFS
- 23.saveAsTextFile算子
- 24.saveAsTextFile算子
- SCALA或者JAVA等的集合,数字输出类型
- 25.collect算子
- 26.collectAsMap算子
- 27.reduceByKeyLocally算子
- 28.lookup算子
- 29.count算子
- 30.top算子
- 31.reduce算子
- 32.fold算子
- 33.aggregate算子