1:flatMap():这个方法类似与map,相当于使用两次map,例如:flatMap(line=>line.split(" "))其实就相当于使用了两次map(line=>line.split(" ")),在词频统计中,可以直接文本分解成单词,而不是单词的列表.
2:mapPartitions():也是类似map的一个方法,不过map是对rdd中的每一个元素进行一个链接,而mapPartition是对rdd中的每一个分区进行一个链接,这样看来,mapPartition比map的效率高的多.
3:reduceByKey(func):这是一个归约的方法,它会将rdd中的键值对中的key相同的键值对中的值进行func的操作,
例如:val kvs = sc.parallelize(List(("A",1),("B",2),("A",3")))
kvs.reduceByKey((x,y)=>(x+y))
得到结果为("A",4)("B",2)
4:groupBy(func):这个方法将rdd中的值进行操作,将操作数作为键,然后将筛选出的值作为对应键的值,其实也是一个形成键值对的方法,
5:groupByKey:没有参数,直接调用,即对键相同对的聚合
6:mapvalues(func):对rdd中的每一对键值对的键不变,对值进行操作;
例如:val a = sc.parallelize(List("a", "b", "c"))
val b = a.map(x => (x.length, x))
b.mapValues(_ + "x").collect
返回的是(1,"ax"),(1,"bx"),(1,"cx")
7:zipWithIndex方法,这个方法将RDD中的每一个元素组成一个键值对(x,y),x是这个元素,y是这个元素在RDD中的序号,从0开始