Spark(六)RDD的血缘依赖
RDD依赖关系1. RDD血缘关系
RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便 恢复丢失的分区 。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。
查看RDD的血缘方法: rdd.toDebugString
示例 /** * @description: RDD血缘依赖 * @author: HaoWu * @create: 2020年08月04日 */ object DependeciedTest { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("RDDTest").setMaster("local[*]") val sc = new SparkContext(conf) val rdd1 = sc.makeRDD(List(1, 2, 3, 4)).map(x => x) println(rdd1.toDebugString) println("----------------------") val rdd2 = rdd1.map(x=>x) println(rdd2.toDebugString) println("----------------------") val rdd3 = rdd2.groupBy(x=>x) println(rdd3.toDebugString) println("----------------------") rdd3.collect() } }
结果 (8) MapPartitionsRDD[1] at map at DependeciedTest.scala:15 [] | ParallelCollectionRDD[0] at makeRDD at DependeciedTest.scala:15 [] ---------------------- (8) MapPartitionsRDD[2] at map at DependeciedTest.scala:18 [] | MapPartitionsRDD[1] at map at DependeciedTest.scala:15 [] | ParallelCollectionRDD[0] at makeRDD at DependeciedTest.scala:15 [] ---------------------- (8) ShuffledRDD[4] at groupBy at DependeciedTest.scala:21 [] +-(8) MapPartitionsRDD[3] at groupBy at DependeciedTest.scala:21 [] | MapPartitionsRDD[2] at map at DependeciedTest.scala:18 [] | MapPartitionsRDD[1] at map at DependeciedTest.scala:15 [] | ParallelCollectionRDD[0] at makeRDD at DependeciedTest.scala:15 [] ---------------------- 2. 依赖关系
依赖关系: 当前RDD和和父RDD之间的依赖关系
查看依赖关系方法: rdd.dependencies
示例 /** * @description: RDD依赖关系 * @author: HaoWu * @create: 2020年08月04日 */ object DependeciedTest { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("RDDTest").setMaster("local[*]") val sc = new SparkContext(conf) val rdd1 = sc.makeRDD(List(1, 2, 3, 4)) println(rdd1.dependencies) println("----------------------") val rdd2 = rdd1.map(x=>x) println(rdd2.dependencies) println("----------------------") val rdd3 = rdd2.groupBy(x=>x) println(rdd3.dependencies) println("----------------------") rdd3.collect() } }
结果 //不依赖于任何RDD List() ---------------------- // 1对1(1父1子)依赖 (窄依赖),窄依赖不会划分Stage List(org.apache.spark.OneToOneDependency@1eaf1e62) ---------------------- //1对N(1父多子)依赖(宽依赖或shuffle依赖),宽依赖会划分Stage List(org.apache.spark.ShuffleDependency@5fad41be) ---------------------- 3. RDD的宽窄依赖窄依赖 (NarrowDependency) 每一个父RDD的Partition只能被子RDD的一个Partition使用,窄依赖我们形象的比喻为独生子女。 宽依赖 (ShuffleDependency) 同一个父RDD的Partition被多个子RDD的Partition依赖,会引起Shuffle,宽依赖我们形象的比喻为多生。 4.任务划分
RDD任务切分中间分为:Application、Job、Stage和Task Application:初始化一个SparkContext即生成一个Application; Job:一个Action算子就会生成一个Job; Stage:Stage等于宽依赖(ShuffleDependency)的个数加1; Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。
注意 :Application->Job->Stage->Task每一层都是1对n的关系。
2022年04月14日星期四互联网日报1。工信部将支持符合条件的工业互联网企业首次公开发行证券并上市2。交通运输部加强道路客运电子客票信息安全管理,严防旅客个人信息等重要数据泄露3。上海市监局发布疫情防控期间电商经营活
Meta要从元宇宙中抽取47。5的佣金,苹果发言人斥其虚伪记者司林威元宇宙还未进入现实,但关于手续费的争议已经开始。4月15日,针对Meta公司计划对在该公司旗下元宇宙内购买的数字资产收取47。5的佣金计划,苹果公司发言人弗雷德塞恩斯在一
受气候变化影响,有哪些原本无法见面的猛兽,未来可能会掐架?在近几十年时间里面,全球气候变暖是一个被人们反复提起的话题,也是一个老生常谈的话题,随着全球气温升高所带来的现象逐渐明显,这一问题也得到了人们越来越多的关注。全球气候变暖是一种和自
威马E。5下月上市,和M7共同入局轿车市场威马E。5下月上市,和M7共同入局轿车市场作者麻辣车事不难发现,继EX5之后,威马近年来的产品规划一直都在致力于往中端市场进军。尤其是即将推出的M7,似乎是希望可以抢占部分特斯拉M
恐龙毁灭时有多痛苦?2公里厚的岩层告诉你,这种痛苦难以形容在我们生存的这个星球上,曾经诞生过很多物种和文明,人类算是至今进化最晚的文明社会主宰者。大约在2。4亿年前,称霸地球是乃是恐龙,他们支配了地球长达1。6亿年。相较于恐龙对地球的支配
美国中央情报局长美国关注的是中国,而不是中国人!有意思啊,美国中央情报局长伯恩斯表示,美国关注的是中国,而不是中国人。美国走向衰退不是没有道理的,连话都不会说,不会讲话的人来管理国家,来要管理全球事物,这是天下最滑稽的事了。伯恩
华东理工重构共价有机框架材料近日,国际权威学术期刊自然在线报道了华东理工大学化学与分子工程学院朱为宏教授田禾院士等基于动态化学构筑共价有机框架材料研究取得的突破性进展。这是华东理工大学首次以第一通讯单位在自然
App隐私政策看完要半小时,你看了吗?大洋网讯上万字的隐私政策,看完要半小时,你看了吗?近日,江苏省消保委进行的一次调查显示,App的隐私政策冗长大片字体加粗难以起到显著提示的作用。广州日报全媒体记者调查也发现,App
海尔与中国移动合作海尔与中国移动合作,在山东省青岛市利用5G技术实现了精密工业装备的现场辅助装配场景的应用。青岛海尔家电工厂结合海尔卡奥斯工业互联网平台,打造基于5GMEC的互联工厂,开展了基于AR
折叠屏手机市场增长快2022年国内市场或将迎来新一轮爆发继OPPOFindN和荣耀MagicV之后,4月11日晚,vivo发布首款折叠屏手机XFold。至此,国内主流手机厂商基本入局折叠屏赛道。2021年被称为折叠屏元年。市场调研机构O
自动驾驶,李彦宏的挣扎与不甘2017年的那个夏天,在百度AI开发者大会的连线直播上,李彦宏坐着一辆无人驾驶的汽车上了五环,然后吃到了一张罚单。他不仅不郁闷,反倒很高兴。事后在谈及这个罚单时,他高喊着无人驾驶罚