SparkStreaming 原理_DStream 的有向无环图 | 学习笔记

简介: 快速学习 SparkStreaming 原理_DStream 的有向无环图

开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:SparkStreaming 原理_DStream 的有向无环图】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/692/detail/12136


SparkStreaming 原理_DStream 的有向无环图

内容介绍:

一、DAG 的定义

二、RDD 与 DStream 的区别

三、DStream 原理的组建

 

一、DAG 的定义

DAG 也叫有向无环图,有向无环图(DAG)=>数据的处理是一环扣着一环的,数据的处理是分步骤的,这叫有向,数据的处理不能首尾交接,如果首尾交接的话就会形成无限循环的执行,这叫做无环。

举例来说,在把数据转换成一种形态的时候,需要分为十个步骤,每一个步骤之间可以连接起来,最终可以生成一个结果,这个结果就可能要把这两个步骤数据集给结合起来,这样的是有项的图。

有向无环图就代表数据的处理是有方向的,但是不能收尾相接。

如果是 RDD 的 wordCount ,代码大致如下

val textRDD = sc.textFile( ...)

val splitRDD = textRDD. flatMap (_.split("“))

val tupleRDD = splitRDD . map((_, 1))

val reduceRDD = tupleRDD . reduceByKey(_ + _)

用图形表示如下(可以理解为有向无环图)

image.png

同样, DStream 的代码大致如下

val lines : Dstream [ String] = ssc.socketTextStream( . . .)

val words : DStream[String] = lines . flatMap(_.split(" ") )

val wordCounts : DStream[ (String,Int)] = words . map(x => (x,1)) . reduceByKey(_+ _)

同理, DStream 也可以形成 DAG 如下

image.png

看起来 DStream 和 RDD 很相似。

1.DStream 内部是由 RDD 组成的

2.DStream 本身也是可以组成 DAG 的,因为 DStream 通过一些转换算子,也是生成了新的 DStream

提问:DStream 内部的 RDD 之间有没有 DAG 呢?


二、RDD 与 DStream 的区别

image.png

val dstream1 = ssc.socketText0

val dstream2 = dstream1.map

val dstream3 = dstream2.flatmap

第—个 RDD

val rdd1 = ..

val rdd2 = rdd1.map

val rdd3 = rdd2.flatmap

第二个 RDD

val rdd1 = ...

val rdd2 = rdd1.mapval

rdd3 = rdd2.flatmap

整个 RDD 的有向无环图,最终构成一个逻辑上的 DStream 有向无环图。每一个RDD 都有相应的有向无环图。

●DStream 的数据是不断进入的,RDD 是针对一个数据的操作

●像 RDD 一样,DStream 也有不同的子类,通过不同的算子生成

●一个 DStream 代表一个数据集,其中包含了针对于上一个数据的操作

●DStream 根据时间切片,划分为多个 RDD ,针对 DStream 的计算函数,会作用于每一个 DStream 中的 RDD

 

三、DStream 原理的组建

搜索“DstreamGrpha ”,可以将 DstreamGraph 理解为是 Dstream 的一个图,Dstream 的 DAG 通过 DstreamGraph 生成,这个图表示了 Dstream 的有向无环图是如何构成的。

DstreamGraph 是先进行定义,然后用 start 进行运行,可以使用 stop 停止运行,可以用 setBatchDuration 指定每个批次的时间间隔,也可以指定入口addInputStream 和出口 addOutputstream

●每个 DStream 都有一个关联的 DStreamGraph 对象

●DstreamGraph 负责表示 DStream 之间的的依赖关系和运行步骤

●DStreamGraph 中会单独记录 InputDStream 和 OutputDStream

相关文章
|
2天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1034 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1726 9
|
9天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
676 152
|
11天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
638 13
|
5天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
397 4