版权声明:本文为博主原创文章,未经博主允许不得转载!
欢迎访问:https://blog.csdn.net/qq_21439395/article/details/83591136
交流QQ: 824203453
- 弹性分布式数据集RDD
- RDD概述
RDD论文,中文版 :http://spark.apachecn.org/paper/zh/spark-rdd.html
-
-
- 产生背景
-
为了解决开发人员能在大规模的集群中以一种容错的方式进行内存计算,提出了RDD的概念,而当前的很多框架对迭代式算法场景与交互性数据挖掘场景的处理性能非常差, 这个是 RDDs 的提出的动机。
-
-
- 什么是RDD
-
RDD是Spark的计算模型。RDD(Resilient Distributed Dataset)叫做弹性的分布式数据集合,是Spark中最基本的数据抽象,它代表一个不可变、只读的,被分区的数据集。
操作RDD 就像操作本地集合一样,有很多的方法可以调用,使用方便,而无需关心底层的调度细节。
-
- 创建RDD
- 集合并行化创建(通过scala集合创建) scala中的本地集合—> spark RDD
val arr = Array(1,2,3,4,5)
val rdd = sc.parallelize(arr)
val rdd =sc.makeRDD(arr)
通过集合并行化方式创建RDD,适用于本地测试,做实验
- 外部文件系统,比如HDFS等
val rdd2 = sc.textFile("hdfs://hdp-01:9000/words.txt")
// 读取本地文件
val rdd2 = sc.textFile(“file:///root/words.txt”)
3)从父RDD转换成新的子RDD
调用Transformation类的方法,生成新的RDD
spark上的所有的方法,有一个专有的名词,叫做算子。
-
- RDD的分区
说对rdd进行操作,实际上是操作的rdd中的每一个分区,分区的数量决定了并行的数量。
使用rdd.partitions.size查看分区数量。
如果从外部创建RDD,比如从hdfs中读取数据, 正常情况下,分区的数量是和我们读取的文件的block块数量是一致的,但是如果只有一个block 块,那么分区数量是2。 也就是说最低的分区数量是2。
如果是集合并行化创建得到的rdd,分区的数量,默认的和最大可用的cores数量相等。
(--total-executor-cores > 可用的cores? 可用的cores:--total-executor-cores)
通过集合并行化创建的rdd是可以任意修改分区的数量的。
版权声明:本文为博主原创文章,未经博主允许不得转载!
欢迎访问:https://blog.csdn.net/qq_21439395/article/details/83591136
交流QQ: 824203453