spark 有向无环图优点(spark生态图中机器学习算法)

技术Spark有向无环图检测的示例分析这篇文章给大家介绍Spark有向无环图检测的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。01—Spark背景介绍Apache Spark 是专为大规模

本文介绍了一个Spark有向无环图检测的实例分析,非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。

01

火花背景介绍

Apache Spark是为大规模数据处理而设计的快速通用计算引擎。Spark是一个类似于Hadoop的开源集群计算环境,具有Hadoop MapReduce的优势。但是,与MapReduce不同,——Job的中间输出可以存储在内存中,因此不再需要读写HDFS。因此,Spark更适合数据挖掘、机器学习等需要迭代的MapReduce算法。

RDD称为弹性分布式数据集,是一种容错和并行的数据结构,它允许用户明确地将数据存储在磁盘和内存中,并控制数据分区。RDD是Spark的灵魂,一个RDD代表一个可以分区的只读数据集。RDD可以有很多分区,每个分区都有大量的记录。

RDD之间的依赖关系用有向无环图表示。让我们来看看有向无环图的基本理论和算法。

02

有向无环图

在图论中,有无向边的图叫做无向图,有无向边的图叫做有向图。在无向图的基础上,如果任何一个顶点不能通过几条边回到这个点,那么这个图就没有循环,这就是有向无环图(DAG图)。如下图所示,4-6-1-2是一条路径,4-6-5也是一条路径,图中没有一个顶点可以通过几条边回到这个点,所以可以得出下图是DAG。

Spark有向无环图检测的示例分析

学位内

渗透度是图论算法中的重要概念之一。通常指有向图中某一点是图中边的终点的次数之和,即项目点的进入边数称为项目点的进入度。如上图所示,顶点4的穿透程度为0。

不学位

对应于入度,顶点的边数称为顶点的出度。如上图所示,顶点3的穿透程度为2。

03

DAG应用程序的另一个例子

在一些任务安排和调度问题上。不同的问题或任务之间有一些依赖关系,有些任务需要先完成才能完成。就像一些学校的教学课程一样。开设某一门课程要看先修课,学生学完先修课才能上这门课。如果将一个课程视为一个节点,则会从该节点引出一个指针,指向其顺序取决于该节点的课程。可能有这样一个图表:

Spark有向无环图检测的示例分析

算法课程指向理论CS,意味着后者的选修课需要先完成算法课程,人工智能依赖于理论CS,机器学习依赖于人工智能,神经网络依赖于机器学习课程,称为一条路径。

还可以看到上图中0度的节点有CS的Introduction,这在有向图的遍历中意义重大,下面会提到。

04

如果上图有戒指,对吗?

444316.png" alt="Spark有向无环图检测的示例分析">

如上所示,如果Machine learning再指向Theoretical CS,意思是选修Theoretical CS的同学需要先修Machine learning,这个就和原来的路径Artificial Intelligence依赖Theoretical CS,Machine learning 依赖Artificial Intelligence,违背!,并且也不合常理,Theoretical CS是一门基础性的理论课,怎么可能选修它之前要先修完machine learning呢?所以不能有环路,这个图是不正确的。所以,这个图必须为有向无环图!

05

有向图如何检测有、无环?

那么,如何检测一个有向图是否是DAG呢?

有向图的环检测,首先对照着无向图的环检测来理解,在无向图中,我们要检测一个图中间是否存在环,需要通过深度优先或广度优先的方式,对访问过的元素做标记。如果再次碰到前面访问过的元素,则说明可能存在环。只做标记,在有向图中检测环路的办法可行吗?

如下图所示,深度优先遍历方法,已经遍历了节点2和6,并marked了,现在遍历节点1的另一条边,依次遍历3,4,5,6,因为6已经遍历,所以说形成了环路,但是实际上并没有,因此,与实际不符合,只对访问过的元素做标记判断有无环路是错误的。

Spark有向无环图检测的示例分析

感觉是要加条件,加什么条件? 如果我们加一个数组保存当前节点是否位于递归栈onStack中,就可以排除上面的问题,因为2,6被标记后,依次递归出栈,然后到1,深度遍历1的另一条边(3->4->5->6),所以6此时不在onStack上,第一次被检测到,所以没有环路。

因此,有向图的无环检测,需要同时借助两个限制条件:

  1. 对访问过的元素做标记

  2. 当前节点是否位于递归栈onStack中

在上图的基础上,增加节点7和8,如下图所示,可以预见,按照深度优先搜索到节点4时,会找到子节点5,节点5的其中一个边找到7,找到8,找到4,节点4此时已经位于onStack中,所以构成环路,是有环图。

Spark有向无环图检测的示例分析

Spark有向无环图检测的示例分析

关于Spark有向无环图检测的示例分析就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/149260.html

(0)

相关推荐

  • MYSQL如何利用MYSQL Shell安装 INNODB Cluster

    技术MYSQL如何利用MYSQL Shell安装 INNODB Cluster今天就跟大家聊聊有关MYSQL如何利用MYSQL Shell安装 INNODB Cluster,可能很多人都不太了解,为了让大家更加了解,小编

    攻略 2021年10月25日
  • MapReduce的工作原理是什么

    技术MapReduce的工作原理是什么本篇文章为大家展示了MapReduce的工作原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。开始聊mapreduce,mapredu

    攻略 2021年12月3日
  • 在Linux 6.3如何安装mysql5.7.16数据库

    技术在Linux 6.3如何安装mysql5.7.16数据库这篇文章主要介绍了在Linux 6.3如何安装mysql5.7.16数据库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让

    攻略 2021年10月30日
  • mysql数据库删除表报错表不存在(mysql创建表总是报错怎么办)

    技术mysql端删表卡住出现报错怎么解决本篇内容介绍了“mysql端删表卡住出现报错怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年12月22日
  • 黄老,道家学说为何又叫黄老学说

    技术黄老,道家学说为何又叫黄老学说黄老道是道教史前道派黄老。是方仙思想与黄老之学的结合。黄老道起名于古代学术上一个主要流派——黄老学,“黄”指黄帝,代表古代“神仙家”和“阴阳家”的思想,“老”指老子,代表道家的思想。“黄

    生活 2021年10月21日
  • G1垃圾回收器与CMS的区别有哪些

    技术G1垃圾回收器与CMS的区别有哪些本篇内容主要讲解“G1垃圾回收器与CMS的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“G1垃圾回收器与CMS的区别有哪些”吧

    攻略 2021年10月20日