===== RDD类型 ===== * value类型的RDD * key,value类型的RDD ===== value类型的RDD"转换" 操作 ===== 不会触发真正的计算 * map:一个分区输入,一个分区输出 * filter:分区内过滤 * distinct:分区内去重 * flatMap: 多个分区输入,一个分区输出 * mapPartitons:获取每个分区的迭代器 * glom:将分区数据转换成数组 * union:合并RDD * cartesian:对2个RDD进行笛卡尔操作 * subtract:2个RDD做差集 * groupby:将分区重新组织 * sample:对每个RDD中每个分区进行取样 * cache:把RDD重磁盘缓存到内存 * persist:把RDD持久化 ===== key,value类型的RDD的 "转换" ===== 不会触发真正的计算 * mapValues:一个分区输入,一个分区输出 * combineByKey:对分区内的相同key的值聚合(key,List[值]) * reduceByKey:对分区内的相同key的值(key,值) * partitionBy:对RDD现有分区重新分区 * cogroup:对多个RDD中的分区重新分区 * join: 笛卡尔积连接,其实是底层做了cogroup操作 * LeftOutJoin,RightOutJoin 􏳞相当于在join的基础上先判断一侧RDD元素是否为空 ===== Action ===== 触发真正的计算 * foreach:􏲧对RDD中每个元素都应用某个函数操作 * saveAsTextFile:保存到hdfs * collect:相当于将分布式的RDD返回为一个单机的数组 * count:返回RDD中元素个数 * top(k):返回最大的k个元素 * take(k):返回最小的k个元素 * takeOrdered:返回最小的k个元素,保证顺序 * reduce:正常reduce操作 * fold:于reduce原理相同,但是fold取的第一个数是zerovalue * aggregate:先对每个分区进行aggregate,然后对整个RDD做fold操作 **只对key,value类型的RDD的有效** * collectAsMap:相当于将k,v类型的分布式的RDD返回为一个单机的数组 * reduceByKeyLocally:先对整体执行reduce操作,再执行collectAsMap * lookup:用于k,v类型的RDD。用于返回指定key的值的序列 ===== 2个特殊变量 ===== * broadcast:广播变量 * accumulator:允许做全局累加