* 针对RDD有两种操作:
1. transformation: 将源RDD转化为另一个RDD,即返回值是rdd
常见的有filter, union, map, flatMap,intersection, cartesian,intersection, reduceByKey(Pari RDD所有)操作
2. action:对RDD进行计算求值, 其中用的是惰性求值,即当调用到之后才真正的计算
常见的有take,count,reduce, reduce, fold, foreach,
* 为了保存RDD中间的求值状态,可以选择不同程度的持久化, 例如:
rdd.persist(StrorageLevel.DISK_ONLY)
默认的是序列化方式存在JVM缓冲中, MEMORY_ONLY_SER
* Pari RDD的转化操作:
1. reduceByKey : 将相同key的键值对进行规约,比如 [{1,2}, {1,3}, {2, 3}] 进行 rdd.reduceByKey((x, y) => x + y) 后,变为[{1,5}, {2, 3}]
2. groupByKey
3. combineByKey(createCombiner, mergeValue, mergeCombiners, partitioner)
4. mapValues(func)
5. flatMapValues(func)
6. keys
7. values
8. sortByKey()
******* 二元RDD*****
9. subsctractByKey
10. join
11. rightOrderJoin
12. leftOrderJoin
13. cogroup