spark将rdd转为string_大数据技术之SparkCore(三)RDD依赖关系
2.6.1 Lineage
RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。
(1)读取一个HDFS文件并将其中内容映射成一个个元组
scala> val wordAndOne = sc.textFile("/fruit.tsv").flatMap(_.split("")).map((_,1))
wordAndOne: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[22] at map at :24
(2)统计每一种key对应的个数
scala> val wordAndCount = wordAndOne.reduceByKey(_+_)
wordAndCount: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[23] at reduceByKey at :26
(3)查看“wordAndOne”的Lineage。通过toDebugString函数:会发现从下往上,依次经历了HadoopRDD—MapPartitionsRDD—flatMap—map几个过程
scala> wordAndOne.toDebugString
res5: String =
(2) MapPartitionsRDD[22] at map at :24 []
| MapPartitionsRDD[21] at flatMap at :24 []
| /fruit.tsv MapPartitionsRDD[20] at textFile at :24 []
| /fruit.tsv HadoopRDD[19] at textFile at :24 []
(4)查看“wordAndCount”的Lineage。在上面基础上又经历了reduceByKey,且已显明是一个ShuffledRDD
scala> wordAndCount.toDebugString
res6: String =
(2) ShuffledRDD[23] at reduceByKey at :26 []
+-(2) MapPartitionsRDD[22] at map at :24 []
| MapPartitionsRDD[21] at flatMap at :24 []
| /fruit.tsv MapPartitionsRDD[20] at textFile at :24 []
| /fruit.tsv HadoopRDD[19] at textFile at :24 []
(5)查看“wordAndOne”的依赖类型。通过dependencies函数,显示出是OneToOneDependency,即窄依赖:
scala> wordAndOne.dependencies
res7: Seq[org.apache.spark.Dependency[_]] = List(org.apache.spark.OneToOneDependency@5d5db92b)
(6)查看“wordAndCount”的依赖类型。通过dependencies函数,显示出是ShuffleDependency,即宽依赖:
scala> wordAndCount.dependencies
res8: Seq[org.apache.spark.Dependency[_]] = List(org.apache.spark.ShuffleDependency@63f3e6a8)
注意:RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。
2.6.2 窄依赖
窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用,窄依赖我们形象的比喻为独生子女(父RDD的一个分区只被一个子RDD使用)
2.6.3 宽依赖
宽依赖指的是多个子RDD的Partition会依赖同一个父RDD的Partition,会引起shuffle,总结:宽依赖我们形象的比喻为超生(父RDD的各个分区都被子RDD使用)
2.6.4 DAG
DAG(Directed Acyclic Graph)叫做有向无环图,原始的RDD通过一系列的转换就就形成了DAG,根据RDD之间的依赖关系的不同将DAG划分成不同的Stage,对于窄依赖,partition的转换处理在Stage中完成计算。对于宽依赖,由于有Shuffle的存在,只能在parent RDD处理完成后,才能开始接下来的计算,因此宽依赖是划分Stage的依据。
2.6.5 任务划分(面试重点)
RDD任务切分中间分为:Application、Job、Stage和Task
1)Application:初始化一个SparkContext即生成一个Application
2)Job:一个Action算子就会生成一个Job
3)Stage:根据RDD之间的依赖关系的不同将Job划分成不同的Stage,遇到一个宽依赖则划分一个Stage。
4)Task:Stage是一个TaskSet,将Stage划分的结果发送到不同的Executor执行即为一个Task。(Stage中有多个分区,一个分区就是一个任务,即taskSet,这些tasks又会被分配到不同Executor中取执行)
注意:Application->Job->Stage-> Task每一层都是1对n的关系。
(本文为系列文章,关注作者阅读其它部分内容,总有一篇是你欠缺的,技术无止境,且学且珍惜!!!)
spark将rdd转为string_大数据技术之SparkCore(三)RDD依赖关系相关推荐
- 大数据技术基础实验三:HDFS实验——部署HDFS
大数据技术基础实验三:HDFS实验--部署HDFS 文章目录 大数据技术基础实验三:HDFS实验--部署HDFS 一.前言 二.实验要求 三.实验原理 1.什么是HDFS? 2.HDFS的体系结构 3 ...
- 大数据产品开发流程规范_大数据技术思想入门(三):分布式文件存储的流程
如果你不喜欢阅读文字的话,可以选择滑到最后看 视频讲解 哟~~~ 进程和 RPC 在上一篇文章中,我们讲解了要解决好大数据集的存储问题,需要引入一个主从结构的集群,其中,主服务器用于存储元数据,从服务 ...
- 云计算与大数据技术应用 第三章
虚拟化技术 虚拟化技术简介 虚拟化技术的概念 虚拟化bai是指计算元件在虚du拟的基础上zhi而不是真实的基础上运行.虚dao拟zhuan化技术可以扩大硬shu件的容量,简化软件的重新配置过程.CPU ...
- 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】
视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...
- 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】
视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...
- 大数据技术的概论(2)
1.5大数据带来多大变革 1技术变革特征 2管理模式变革(人力,流程,制造,市场) 1)数据资产化 2)决策智能化 3信息技术IT向数据技术DI的转变 相关资料:当地时间11月23日,世界贸易组织(W ...
- 大数据技术常用的工具有哪些
数据是一个庞大而复杂的数据集合,它包含的内容有很多,比如,气候信息.公开信息.网购信息.网络日记.视频图像.病历等等.这些都是大数据的原始资料来源.这些原始数据量非常庞大,需要用专业的工具来进行处理, ...
- 大数据技术人年度盛事! BDTC 2016将于12月8-10日在京举行
2016年12月8日-10日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所和CSDN共同协办的2016中国大数据技术大会(BigDataTechnologyCo ...
- 2016中国大数据技术大会六折抢票最后一周(附部分讲师名单)
2016年12月8日-10日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所和CSDN共同协办的2016中国大数据技术大会(Big Data Technology ...
最新文章
- Netty源码解析1-Buffer
- STL——vector
- 【跃迁之路】【578天】程序员高效学习方法论探索系列(实验阶段335-2018.09.06)...
- netflix feign概述
- 多重判定系数怎么求_关于多重共线性
- 139.00.007 Git学习-Cheat Sheet
- SQL ABAP ST05 hint
- Docker中安装Jenkins实时发布.net core 项目(一)
- Java讲课笔记04:变量与常量
- python vimIDE环境
- Atamai 手术导航软件开发包
- 80 行代码爬取豆瓣 Top250 电影信息并导出到 CSV 及数据库
- Data Mining with R
- 药企如何应对计算机系统验证?浪潮GMP管理保驾护航
- tableau制作中国地图(全)
- 华普天健会计师事务所管理合伙人朱宗瑞:期待数据资产价值在财务报表里充分体现...
- Fe3O4纳米颗粒的表面接枝修饰/氨基乙酸|L-半胱氨酸(L-Cys)修饰的Fe3O4包裹TiO2(Fe3O4@TiO2/L-Cys)复合纳米粒子
- 这个春天,邀你一起探寻AI与青春的碰撞之力
- 如何将OFD文件转成WORD?每天免费用
- 新中大连接服务器文件,新中大软件服务器地址修改