Spark系列修炼---入门笔记9

来源:互联网 发布:云计算及其关键技术 编辑:程序博客网 时间:2024/05/16 18:20

核心内容:
1、Spark中map与flatMap的区别
2、Spark中RDD的核心概念


1、Spark中map与flatMap的区别

①map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;flatMap函数则是两个操作的集合,即先映射再扁平化:首先,同map函数一样,对每一条输入进行指定的操作,然后为每一条输入返回一个对象;然后将所有对象合并成一个对象.
②flatMap与map唯一不一样的地方就是传入的函数在处理完之后返回值必须是集合(List或者Array),其实这也不难理解,既然是flatMap,那除了map以外必然还有flat的操作,所以需要返回值是集合(List或者Array)才能执行flat这一步。
③Spark中flatMap和map的定义:
map()是将函数用于RDD中的每个元素,将返回值构成新的RDD;
flatMap()是将函数应用于RDD中的每个元素,将返回的迭代器的所有内容构成新的RDD .
④flatMap还可以去除掉空元素。


实例程序1:
这里写图片描述
运行结果:

List(20, 40, 60, 80)List(10, 20, 30, 40)

实例程序2:
这里写图片描述
运行结果:

List(List(2), List(4), List(Spark))List(2, 4, Spark)
2、Spark中RDD的核心概念

①在Spark当中,RDD本身的概念为弹性分布式数据集,归根结底RDD就是数据集,RDD[T]可以查看出数据集中数据的类型.
②在Spark中,对数据的所有操作不外乎创建RDD、转化已有的RDD、调用RDD操作进行求值。


实例程序1:
这里写图片描述
运行结果:

Spark   1you 2Hello   4hello   2baby    1me  1Hadoop  1

实例程序2:spark-shell下的部分截图

scala> val words = lines.flatMap(line=>line.split(" "))words: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at flatMap at <console>:29scala> words.collect…………res0: Array[String] = Array(hello, you, spark, hadoop, java, scala, java, hello)

从运行结果上可以看出,flatMap的返回的数据类型是Array[String],而不再是Array[Array[String]]。

1 0
原创粉丝点击