开发者学堂课程【大数据Spark2020最新课程(知识精讲与实战演练)第二阶段:RDD 的分区和 shuffle 创建 RDD 时指定分区数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/689/detail/11992
RDD 的分区和 shuffle 创建 RDD 时指定分区数
内容介绍
一、本节框架
二、通过本地集合时指定分区数
三、通过读取文件时指定分区数
一、本节框架
学习指定 RDD 的分区,在创建 RDD 指定。
创建 RDD 的三种方式:
1.通过本地集合创建
2.通过读取外部系统的文件创建
3.其他 RDD 的衍生,通过算子进行指定。
讨论指定 RDD 的分区方式:
(1)通过本地集合时指定分区数
(2)通过读取文件时指定分区数
进入 shell 窗口,通过命令:
bin/spark-shell --master local[6]
//指定6个线程数
进入 spark。
二、通过本地集合时指定分区数
编写命令:
scala> val rdd1 = sc.parallelize(Seq(1
,3,4,5,6,7),3)
//通过 parallelize 方法创建集合时,parallelize有两个参数:第一个是集合,第二个是分区数 。比如说指定一个3作为分区数
rdd1.partitions.size
//通过 size 查看到分区数。
rdd1.partitions
//包含三个分区。
第一个分区:Array[org.apache.spark.Partition]=Array(org.apache.spark.rdd.ParallelCollectionPartition@691,
第二个分区:
org. apache. spar k.rdd.ParallelCollectionPartition@692
,
第三个分区:
org.apache.spark.rdd.ParallelCollectionPartition@693
。
三、通过读取文件时指定分区数
再去创建一个rdd2:
rdd2=sc.textFile("hdfs://node01:8020/dataset/wordcount.txt
”, 6)
//手动指定分区。通过 textFile 方法创建 RDD 。通过读取 hdfs 上的文件 wordcount.txt 来创建。
此处也有2个参数,但是这里的分区数指定的最小的分区数,所以真实的分区数比指定的多 。
rdd2.partitions.size
//真实的分区数比指定的多
这是2种创建 RDD 指定分区的方式。