Spark操作-map和flatMap

来源:互联网 发布:网络推广主管工作计划 编辑:程序博客网 时间:2024/06/14 14:25

       map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。


测试数据:

2 13 13 24 14 24 35 16 17 17 57 6

例子程序:

import org.apache.spark.SparkConfimport org.apache.spark.SparkContextimport org.apache.log4j.Levelimport org.apache.log4j.Loggerimport edu.berkeley.cs.amplab.spark.indexedrdd.IndexedRDDimport edu.berkeley.cs.amplab.spark.indexedrdd.IndexedRDD._import scala.collection.mutableobject Test {  def main(args: Array[String]): Unit = {    val conf = new SparkConf()      .setAppName("MapOperation")      .setMaster("local")    val sc = new SparkContext(conf)    val mapRdd=sc.textFile("./club.txt").map { x =>        val tokens=x.split(" ")       (tokens(0),tokens(1))    }    mapRdd.map{x=>x._1}.saveAsTextFile("./MapOperation/key0")  //map,flatmap操作可以把原类型映射到任何类型    mapRdd.keys.saveAsTextFile("./MapOperation/key") //Map中的keys方法可以得到所有的keys[RDD]    mapRdd.values.saveAsTextFile("./MapOperation/values")//Map中的keys方法可以得到所有的values[RDD]        val listRdd=sc.parallelize(List(List(1,2,3),List(4,5,6),List(7,8,9)))    val map=listRdd.map { x => x }    val flatmap=listRdd.flatMap{x=>x}    println(map.collect())    println(flatmap.collect())      }}
运行结果:


总结:

- Spark中map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;

- 而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:

   操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象

   操作2:最后将所有对象合并为一个对象





0 0
原创粉丝点击