5.1.4分区 RDD是弹性分布式数据集,通常RDD很大,会被分成很多 个分区,分别保存在不同的节点上 1.分区的作用 (1)增加并行度 Worker Nodel WorkerNode2 WorkerNode3 Worker Node4 图RDD分区被保存到不同节点上 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.4 分区 RDD是弹性分布式数据集,通常RDD很大,会被分成很多 个分区,分别保存在不同的节点上 WorkerNode1 WorkerNode2 WorkerNode3 WorkerNode4 p1 p6 p2 p3 p4 p7 p8 p5 rdd2 rdd1 图 RDD分区被保存到不同节点上 1.分区的作用 (1)增加并行度
5.1.4分区 1分区的作用 User Data( Userld, UserInfo Events UserID, LinkInfo (2)减少通信开销 UserData和 Events表进行连接操作,获得 (UserID, UserInfo, LinkInfo userData Joined events 山1 u3 Jk um 网络通信 图未分区时对 UserData和 Events两个表进行连接操作 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.4 分区 1.分区的作用 (2)减少通信开销 e1 e2 en userData joined events 网络通信 j1 j2 jk u1 u2 u3 um …… …… …… 图 未分区时对UserData和Events两个表进行连接操作 UserData(UserId,UserInfo) Events(UserID,LinkInfo) UserData 和Events 表进行连接操作,获得 (UserID,UserInfo,LinkInfo)
5.1.4分区 1分区的作用 UserData (Userid, UserInfo Events (UserID, LinkInfo (2)减少通信开销 UserData和 Events表进行连接操作,获得 (UserID, UserInfo, LinkInfo user Data joined events 网络通信 本地引用 图采用分区以后对 UserData和 Events两个表进行连接操作 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.4 分区 u1 u2 u3 um u2 u3 um e1 e2 en userData joined events 网络通信 本地引用 u1 图 采用分区以后对UserData和Events两个表进行连接操作 1.分区的作用 (2)减少通信开销 UserData(UserId,UserInfo) Events(UserID,LinkInfo) UserData 和Events 表进行连接操作,获得 (UserID,UserInfo,LinkInfo)
5.1.4分区 2RDD分区原则 RDD分区的一个原则是使得分区的个数尽量等于集群中的CPU核心 (core)数目 对于不同的spaκk部署模式而言(本地模式、 Standalone模式、 YARN模式、 Mesos模式),都可以通过设置 spark. default parallelism这个参数的值,来配置默认的分区数目, 般而 本地模式:默认为本地机器的CPU数目,若设置了 locaN],则默认 为N * Apache Mesos:默认的分区数为8 Standalone或YARN:在“集群中所有CPU核心数目总和”和“2 者中取较大值作为默认值 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.4 分区 2.RDD分区原则 对于不同的Spark部署模式而言(本地模式、Standalone模式、 YARN模式、Mesos模式),都可以通过设置 spark.default.parallelism这个参数的值,来配置默认的分区数目,一 般而言: *本地模式:默认为本地机器的CPU数目,若设置了local[N],则默认 为N *Apache Mesos:默认的分区数为8 *Standalone或YARN:在“集群中所有CPU核心数目总和”和“2” 二者中取较大值作为默认值 RDD分区的一个原则是使得分区的个数尽量等于集群中的CPU核心 (core)数目
5.1.4分区 3设置分区的个数 (1)创建RDD时手动指定分区个数 在调用 d textFile(和 parallelized方法的时候手动指定分区个数即可,语法 格式如下: Sc text File(path, partition Num 其中,path参数用于指定要加载的文件的地址, partitionNum参数用于 指定分区个数。 scala> val array Array(1, 2, 3, 4, 5) scala> val rdd= sc parallelize(aray,2)∥设置两个分区 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.4 分区 3.设置分区的个数 (1)创建RDD时手动指定分区个数 在调用textFile()和parallelize()方法的时候手动指定分区个数即可,语法 格式如下: sc.textFile(path, partitionNum) 其中,path参数用于指定要加载的文件的地址,partitionNum参数用于 指定分区个数。 scala> val array = Array(1,2,3,4,5) scala> val rdd = sc.parallelize(array,2) //设置两个分区