RDD变换
返回指向新rdd的指针,在rdd之间创建依赖关系。每个rdd都有计算函数和指向父RDD的指针。map() //对每个元素进行变换,应用变换函数//(T)=>Vfilter() //过滤器,(T)=>BooleanflatMap() //压扁,T => TraversableOnce[U]mapPartitions() //对每个分区进行应用变换,输入的Iterator,返回新的迭代器,可以对分区进行函数处理。//Iterator<T> => Iterator<U>mapPartitionsWithIndex(func) //同上,(Int, Iterator<T>) => Iterator<U>sample(withReplacement, fraction, seed) //采样返回采样的RDD子集。//withReplacement 元素是否可以多次采样.//fraction : 期望采样数量.[0,1]union() //类似于mysql union操作。//select * from persons where id < 10//union select * from id persons where id > 29 ;intersection //交集,提取两个rdd中都含有的元素。distinct([numTasks])) //去重,去除重复的元素。groupByKey() //(K,V) => (K,Iterable<V>)reduceByKey(*) //按key聚合。aggregateByKey(zeroValue)(seqOp, combOp, [numTasks])//按照key进行聚合key:String U:Int = 0sortByKey //排序join(otherDataset, [numTasks]) //连接,(K,V).join(K,W) =>(K,(V,W))cogroup //协分组//(K,V).cogroup(K,W) =>(K,(Iterable<V>,Iterable<!-- <W> -->))cartesian(otherDataset) //笛卡尔积,RR[T] RDD[U] => RDD[(T,U)]pipe //将rdd的元素传递给脚本或者命令,执行结果返回形成新的RDDcoalesce(numPartitions) //减少分区repartition //可增可减repartitionAndSortWithinPartitions(partitioner)//再分区并在分区内进行排序
RDD Action
collect() //收集rdd元素形成数组.count() //统计rdd元素的个数reduce() //聚合,返回一个值。first //取出第一个元素take(1)take //takeSample (withReplacement,num, [seed])takeOrdered(n, [ordering])saveAsTextFile(path) //保存到文件saveAsSequenceFile(path) //保存成序列文件saveAsObjectFile(path) (Java and Scala)countByKey() //按照key,统计每个key下value的个数.
