开发者学堂课程【大数据Spark2020最新课程(知识精讲与实战演练)第二阶段:RDD 的分区和 Shuffle 查看分区】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/689/detail/11991
RDD 的分区和 Shuffle 查看分区
内容介绍
一、查看分区的方法
二、验证
一、查看分区的方法
本节继续学习 RDD 的分区和 Shuffle 的过程,讲解如何查看分区。
第一种方式通过 webui 的方式:
首先进入 shell 窗口:
因为有一些分区操作放在集群里更直观。
编写命令如下:
cd/export/servers/spark
bin/spark-shell --master local[6]
//通过 master 指定 spark shell 的交互式窗口,交互式窗口的运行的位置呢,可以指定 local,也可以指定spark://node01等等。为了便于我们的控制,所以呢,我们直接指定 local[6] 就可以,指定6个分区。
打开 spark 。
注意:其中的 Spark context available as'sc 创建了一个对象,叫做 SC,类型是 spark context。
Spark context Web UI available athttp://172.21.0.11:4040
//sparkshell 为我们提供了一个 ui 在4040的端口上。
继续编写代码:
val rdd1 = sc.parallelize(Seq(1
,2,3,4,5,6,7,8,9,10))
拿到 RDD 对象:
通过创建 RDD并不能直接执行 RDD,只能拿到一个 RDD 对象,执行 RDD 需要调用 RDD1中的 action 。
每一次调用 action,就会生成一个 job 放在集群当中。第二步就是分阶段,每个阶段叫做一个 stages 。接下来先调用 collect。执行,
rdd1.collect
()
获取到结果如下:
然后通过浏览器打开 node01 的4040端口:
此处指 RDD 有6个分区,在开启 spark shell 窗口时,指定的 master 是 local[6] 。然后 :quit 退出。
猜测:通过 local[6] 来开启 spark shell ,默认创建一个 ID 时,就会有六个分区。接下来验证想法。
二、验证
编写代码:
bin/spark-shell --master local[8]
指定 local[8]。
val rdd1 = sc.parallelize(Seq(1
,2,3,4,5,6,7,8,9,10))
rdd1.collect
()
再次进入浏览器打开 node01 的4040端口:
默认分区变为8。证明猜测正确。
第二种查看分区的方法:
rdd1.partitions
rdd1.partitions.size
可以查看集合数量,通过 size 查看有8个分区,partition 这个集合中保留分区的信息。
查看分区的2种方式:
1. 通过 webui 的方式。
2. 通过partitions的方式。