大数据课程K4——Spark的DAG&&RDD依赖关系

这篇具有很好参考价值的文章主要介绍了大数据课程K4——Spark的DAG&&RDD依赖关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州

 ▲ 本章节目的

⚪ 了解Spark的DAG;

⚪ 掌握Spark的RDD的依赖关系;

⚪ 了解Spark对于DAG的Stage的划分;

一、DAG概念

1. 概述

Spark会根据用户提交的计算逻辑中的RDD的转换和动作来生成RDD之间的依赖关系,同时这个计算链也就生成了逻辑上的DAG。接下来以“Word Count”为例,详细描述这个DAG生成的实现过程。

2. 案例1解释

Spark Scala版本的Word Count程序如下:

val file=sc.textFile("hdfs://hadoop01:9000/hello1.txt")

val counts = file.flatMap(line => line.split(" "))

           .map(word => (word, 1))

           .reduceByKey(_ + _)

 counts.saveAsTextFile("hdfs://...")

file和counts都是RDD,其中file是从HDFS上读取文件并创建了RDD,而counts是在file的基础上通过flatMap、map和reduceByKey这三个RDD转换生成的。最后,counts调用了动作saveAsTextFile,用户的计算逻辑就从这里开始提交的集群进行计算。

大数据课程K4——Spark的DAG&&RDD依赖关系,大数据,spark,分布式

 上图展示的是word count案例的计算链,Spark底层会将这个计算链抽象为一个DAG(有向无环图)。关键的是,这个DAG记录了RDD之间的依赖关系,借助RDD之间的依赖关系,可以实现数据容错。比如上图中,RDD1是RDD2的父RDD。反之RDD2是RDD1的子RDD。从分区的角度,有父分区和子分区的概念。

即当某个子分区数据丢失,借助RDD之间的依赖关系,可以从上游的父分区进行恢复。

那么上面这5行代码的具体实现是什么呢?

1. 行1:sc是org.apache.spark.SparkContext的实例,它是用户程序和Spark的交互接口,会负责连接到集群管理者,并根据用户设置或者系统默认设置来申请计算资源,完成RDD的创建等。

sc.textFile("hdfs://...")就完成了一个org.apache.spark.rdd.HadoopRDD的创建,并且完成了一次RDD的转换:通过map转换到一个org.apache.spark.rdd.MapPartitions-RDD。也就是说,file实际上是一个MapPartitionsRDD,它保存了文件的所有行的数据内容。

2. 行2:将file中的所有行的内容,以空格分隔为单词的列表,然后将这个按照行构成的单词列表合并为一个列表。最后,以每个单词为元素的列表被保存到MapPartitionsRDD。

3. 行3:将第2步生成的MapPartittionsRDD再次经过map将每个单词word转为(word,1)的元组。这些元组最终被放到一个MapPartitionsRDD中。

4. 行4:首先会生成一个MapPartitionsRDD,起到m文章来源地址https://www.toymoban.com/news/detail-666582.html

到了这里,关于大数据课程K4——Spark的DAG&&RDD依赖关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据开发之Spark(RDD弹性分布式数据集)

    rdd(resilient distributed dataset)叫做弹性分布式数据集,是spark中最基本的数据抽象。 代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 1.1.1 rdd类比工厂生产 1.1.2 wordcount工作流程 1、一组分区(partition),即是数据集的基本组成单位,

    2024年01月24日
    浏览(65)
  • Spark、RDD、Hive 、Hadoop-Hive 和传统关系型数据库区别

    Hive Hadoop Hive 和传统关系型数据库区别 Spark 概念 基于内存的分布式计算框架 只负责算 不负责存 spark 在离线计算 功能上 类似于mapreduce的作用 MapReduce的缺点 运行速度慢 (没有充分利用内存) 接口比较简单,仅支持Map Reduce 功能比较单一 只能做离线计算 Spark优势 运行速度快

    2024年02月13日
    浏览(43)
  • Spark-RDD的依赖

    rdd之间是有依赖关系 窄依赖 每个父RDD的一个Partition最多被子RDD的一个Partition所使用 父rdd和子rdd的分区是一对一 map flatMap fliter 宽依赖 父RDD的Partition会被多个子RDD的Partition所使用 父rdd和子rdd的分区是一对多 grouBy() grouByKey() sortBy() sortByKey() reduceBykey() distinct() rdd1 -- rdd2 --rdd3 S

    2024年01月21日
    浏览(42)
  • spark中Rdd依赖和SparkSQL介绍--学习笔记

    1.1概念 rdd的特性之一 相邻rdd之间存在依赖关系(因果关系) 窄依赖 每个父RDD的一个Partition最多被子RDD的一个Partition所使用 父rdd和子rdd的分区是一对一(多对一) 触发窄依赖的算子 map(),flatMap(),filter() 宽依赖 父RDD的一个partition会被子rdd的多个Partition所使用 父rdd和子rdd的

    2024年01月17日
    浏览(47)
  • Spark大数据处理讲课笔记---Spark RDD典型案例

    利用RDD计算总分与平均分 利用RDD统计每日新增用户 利用RDD实现分组排行榜 针对成绩表,计算每个学生总分和平均分   读取成绩文件,生成lines;定义二元组成绩列表;遍历lines,填充二元组成绩列表;基于二元组成绩列表创建RDD;对rdd按键归约得到rdd1,计算总分;将rdd1映射

    2024年02月06日
    浏览(48)
  • Spark【Spark SQL(二)RDD转换DataFrame、Spark SQL读写数据库 】

    Saprk 提供了两种方法来实现从 RDD 转换得到 DataFrame: 利用反射机制推断 RDD 模式 使用编程方式定义 RDD 模式 下面使用到的数据 people.txt :         在利用反射机制推断 RDD 模式的过程时,需要先定义一个 case 类,因为只有 case 类才能被 Spark 隐式地转换为DataFrame对象。 注意

    2024年02月09日
    浏览(51)
  • Spark RDD编程 文件数据读写

    从本地文件系统读取数据,可以采用textFile()方法,可以为textFile()方法提供一个本地文件或目录地址,如果是一个文件地址,它会加载该文件,如果是一个目录地址,它会加载该目录下的所有文件的数据。 示例:读取一个本地文件word.txt val textFile中的textFile是变量名称,sc.t

    2024年02月05日
    浏览(41)
  • 大数据 - Spark系列《六》- RDD详解

    Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 大数据 - Spark系列《四》- Spark分布式运行原理-CSDN博客 大数据

    2024年02月20日
    浏览(44)
  • Spark六:Spark 底层执行原理SparkContext、DAG、TaskScheduler

    学习Spark运行流程 学习链接:https://mp.weixin.qq.com/s/caCk3mM5iXy0FaXCLkDwYQ 流程: SparkContext向管理器注册并向资源管理器申请运行Executor 资源管理器分配Executor,然后资源管理器启动Executor Executor发送心跳至资源管理器 SparkContext构建DAG有向无环图 将DAG分解成Stage(TaskSet) 把Stage发送给

    2024年02月01日
    浏览(35)
  • Spark 大数据实战:基于 RDD 的大数据处理分析

    之前笔者参加了公司内部举办的一个 Big Data Workshop,接触了一些 Spark 的皮毛,后来在工作中陆陆续续又学习了一些 Spark 的实战知识。 本文笔者从小白的视角出发,给大家普及 Spark 的应用知识。 Spark 集群是基于 Apache Spark 的分布式计算环境,用于处理 大规模数据集 的计算任

    2024年01月25日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包