Spark中RDD的理解
RDD:RDD是Spark的计算模型 RDD(Resilient Distributed Dataset)叫做弹性的分布式数据集合,是Spark中最基本的数据抽象,它代表一个不可变、只读的,被分区的数据集
操作RDD就像操作本地集合一样,数据会被分散到多台机器中(以分区为单位),需关心底层的调度细节
如何创建RDD:
1)集合并行化创建(通过scala集合创建)scala中的本地集合------> spark RDD
val rdd=sc.parallelize(arr)
2)
//读取外部文件系统,比如HDFS等
val rdd2 = sc.textFile(“hdfs://hdp-nn-01:9000/words.txt”)
//读取本地文件
val rdd2 = sc.textFile(“file:///root/words.txt”)
3)从父RDD转换成新的子RDD,最常用方式
调用Transformation 类的方法,生成新的RDD
参考:
https://blog.csdn.net/mys_35088/article/details/80979873
**分区概念:
** 什么是分区以及为什么要分区?
4.RDD的分区:
rdd中和文件切片相关的概念叫做分区,也就是说对rdd进行操作,实际上是操作的rdd中的每一个分区,分区的数量决定了并行的数量。
使用rdd.partitions.size或者rdd.partitions.length查看分区数量。
Spark RDD 是一种分布式的数据集,由于数据量很大,因此要它被切分并存储在各个结点的分区当中。从而当我们对RDD进行操作时,实际上是对每个分区中的数据并行操作。