4.1.3持久化 persist的圆括号中包含的是持久化级别参数: persist( MEMORY ONLY):表示将RDD作为反序列化的对 象存储于JⅥM中,如果内存不足,就要按照LRU原则替换 缓存中的内容 persist( MEMORY AND_DSK表示将RDD作为反序列化 的对象存储在JVM中,如果内存不足,超出的分区将会被 存放在硬盘上 般而言,使用 cache方法时,会调用 persist(MEMORY ONLY) 可以使用 unpersist()方法手动地把持久化的RDD从缓存中 移除 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 4.1.3 持久化 persist()的圆括号中包含的是持久化级别参数: •可以使用unpersist()方法手动地把持久化的RDD从缓存中 移除 •persist(MEMORY_ONLY):表示将RDD作为反序列化的对 象存储于JVM中,如果内存不足,就要按照LRU原则替换 缓存中的内容 •persist(MEMORY_AND_DISK)表示将RDD作为反序列化 的对象存储在JVM中,如果内存不足,超出的分区将会被 存放在硬盘上 •一般而言,使用cache()方法时,会调用 persist(MEMORY_ONLY)
4.13持久化 针对上面的实例,增加持久化语句以后的执行过程如下: >>>list=[Hadoop", "Spark", Hive" >>>rdd= sc parallelize(list) >>>rdd. cache0#会调用 persist( MEMORY ONLY,但是,语句执行到这里, 并不会缓存rdd,因为这时rdd还没有被计算生成 >>> print( rdd. count0)#第一次行动操作,触发一次真正从头到尾的计算,这 时上面的 Idd cacheo才会被执行,把这个rdd放到缓存中 >> print(;'join(rdd. collect)#第二次行动操作,不需要触发从头到尾的计算, 只需要重复使用上面缓存中的rdd Hadoop, Spark, Hive Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 4.1.3 持久化 >>> list = ["Hadoop","Spark","Hive"] >>> rdd = sc.parallelize(list) >>> rdd.cache() #会调用persist(MEMORY_ONLY),但是,语句执行到这里, 并不会缓存rdd,因为这时rdd还没有被计算生成 >>> print(rdd.count()) #第一次行动操作,触发一次真正从头到尾的计算,这 时上面的rdd.cache()才会被执行,把这个rdd放到缓存中 3 >>> print(','.join(rdd.collect())) #第二次行动操作,不需要触发从头到尾的计算, 只需要重复使用上面缓存中的rdd Hadoop,Spark,Hive 针对上面的实例,增加持久化语句以后的执行过程如下:
4.14分区 RDD是弹性分布式数据集,通常RDD很大,会被分成很多 个分区,分别保存在不同的节点上 1.分区的作用 (1)增加并行度 Worker Nodel WorkerNode2 WorkerNode3 Worker Node4 图RDD分区被保存到不同节点上 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 4.1.4 分区 RDD是弹性分布式数据集,通常RDD很大,会被分成很多 个分区,分别保存在不同的节点上 WorkerNode1 WorkerNode2 WorkerNode3 WorkerNode4 p1 p6 p2 p3 p4 p7 p8 p5 rdd2 rdd1 图 RDD分区被保存到不同节点上 1.分区的作用 (1)增加并行度
4.14分区 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 4.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)
4.14分区 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 4.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)