RDD数据是不可变的:
transformation
将一个RDD变成一个新的RDD’ 比如mapreduce中的map操作,将数据集里的元素做处理变成新的元素,形成RDD’。transformation是不会立刻将结果算出来的,相当于把你的意图记下来,最后还要经过action这样的刺激才会返回计算结果。如下几个算子属于transformation操作: (1)map(func)操作,上图已经用到 (2)filter(func)操作,将满足函数的元素返回true值并保存,不满足的过滤掉 (3)flatMap(func)操作,先将元素进行map,再把所得到的所有元素变成一个对象: <1>flatMap
<2>map
对比可以看出,map出来的还是两个对象,而flatMap出来的对象只有一个。 (4)union、intersection 求两个RDD之间的并集与交集 (5)groupByKey 将元组中的第0个元素当做key,进行分组
action
就像上面所说的transformation,它是惰性的,必须要有一个东西刺激它才会出结果,action就派上了用场,如下也有一些action算子: (1)collect (2)reduce (3)first
persisit
此操作将数据缓存在内存或者磁盘上。 其实还有一些算子没有列出,欢迎大家补充指正