首页 > 其他分享 >基于SpringBoot+Spark搭建本地计算引擎服务

基于SpringBoot+Spark搭建本地计算引擎服务

时间:2024-06-16 11:28:30浏览次数:18  
标签:HashMap 拓扑 result new 顶点 Spark 排序 搭建 SpringBoot

1. 项目背景

  上一篇文章我们讲解了搭建数据挖掘可视化系统(大数据数据挖掘系统可视化设计艺术-CSDN博客)的主要内容,通过构建算子工作流可以完成数据挖掘的工作。这时这里的算子可以提交到本地计算请求,也可以提交大数据集群做计算,本文将详细介绍搭建本地计算请求的过程。

2.拓扑排序核心算法

2.1算法描述

拓扑排序是针对有向无环图(DAG)的一种排序方法,它可以用来解决任务调度、依赖关系等问题。

核心算法逻辑描述如下:
1. 初始化一个数组inDegree,用来记录每个顶点的入度数(即有多少其他顶点指向该顶点)。
2. 遍历图的所有顶点,统计每个顶点的入度数,并将其存入inDegree数组中。
3. 初始化一个队列queue,并将所有入度为0的顶点放入队列中。
4. 初始化一个空数组result,用于存储排序后的顶点。
5. 当队列不为空时,执行以下操作:
   - 取出队首顶点v,并将其放入result数组中。
   - 遍历v的所有邻接顶点u:
     - 将u的入度减1。
     - 若u的入度变为0,将u放入队列中。
6. 当队列为空时,如果result数组的长度等于图的顶点数,说明拓扑排序成功,返回result;否则,说明图中存在环,拓扑排序失败。

拓扑排序的时间复杂度为O(V+E),其中V为顶点数,E为边数。

2.2代码实现
/**
     * @param links    节点关系
     * @param opMapper 算子id -> Operator映射
     * @param flag
     * @return
     */
    private List<String> splitLinks(JSONArray links, HashMap<String, Operator> opMapper, boolean flag) {
        List<String> flow = new ArrayList<>();
        List<String> fullFlow = new ArrayList<>();
        HashMap<String, Integer> fromMap = new HashMap<>();
        HashMap<String, Integer> toMap = new HashMap<>();
        for (Object obj : links) {
            JSONObject link = (JSON

标签:HashMap,拓扑,result,new,顶点,Spark,排序,搭建,SpringBoot
From: https://blog.csdn.net/jy739761380/article/details/139689012

相关文章

  • Java毕业设计-基于springboot开发的图书个性化推荐系统设计与实现-毕业论文(附毕设源代
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、前台首页功能模块2、管理员功能模块3、学生功能模块四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的图书个性化推荐系统......
  • Java毕业设计-基于springboot开发的图书管理系统-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、个人中心2、管理员管理3、用户管理4、图书出版社管理5、公告类型管理6、所在书架管理7、图书类型管理8、论坛管理9、公告信息管理10、图书信息......
  • springboot事务管理的机制是什么
    SpringBoot的事务管理机制实质上是基于Spring框架的事务处理机制。其主要目的是确保一系列数据库操作要么全部成功,要么全部失败(回滚),从而维护数据的完整性和一致性。SpringBoot事务管理遵循ACID四大特性:1、原子性(Atomicity)事务是一个原子操作单元,其对数据的修改要么全都执......
  • springboot的多线程事务能否保证事务的一致性
    在SpringBoot中,多线程事务的一致性取决于事务管理的配置和实现。SpringFramework本身提供了多种事务管理的方式,如基于注解的声明式事务、编程式事务等。在多线程环境下,要保证事务的一致性需要特别注意以下几点:事务传播属性(TransactionPropagation):在进行多线程事务处理时,需......
  • Windows中搭建centos虚拟机和MySQL
    背景前一段时间,博主为了在家里搭建学习环境,想模拟一个生产环境,尝试了Windows安装WSL、Vmwareworkstationplayer安装Ubuntu、把Window删了直接装Ubuntu、把Ubuntu删了装回Windows(Windows一直无法安装到SSD,最后拆了电脑拔了机械硬盘才装成功)的多个阶段,发现还是Windows用的习惯......
  • Linux环境搭建和项目基础
    GCCGCC原名为GNUC语言编译器(GNUCCompiler)GCC(GNUCompilerCollection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、Objective-C、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等)GCC不仅支持C的许多“方言”,......
  • 广告联盟小游戏APP平台搭建
      广告联盟对接小游戏的运作方式通常如下:  1.注册与审核:小游戏开发者需要在广告联盟平台上注册并提交相关资料进行审核,以成为联盟的合作伙伴。  2.广告接入:一旦通过审核,广告联盟会为小游戏开发者提供相应的广告接入SDK或API,开发者需要将其集成到小游戏的代码中。......
  • 一文了解Spark引擎的优势及应用场景
    Spark引擎诞生的背景Spark的发展历程可以追溯到2009年,由加州大学伯克利分校的AMPLab研究团队发起。成为Apache软件基金会的孵化项目后,于2012年发布了第一个稳定版本。以下是Spark的主要发展里程碑:初始版本发布:2010年开发的MateiZaharia的研究项目成为Spark的前身。在2010年......
  • Spark RDD与算子详解:案例解析(第3天)
    系列文章目录1-RDD的基本介绍(了解)2-如何构建RDD(熟悉)3-RDD的相关算子(案例详解)(掌握)4-sparkRDD算子相关面试题(重点)文章目录系列文章目录前言一、RDD的基本介绍(了解)1、什么是RDD2、RDD的五大特性3、RDD的五大特点二、如何构建RDD(熟悉)1、并行化本地集合方式2、读......
  • 零基础-零成本搭建个人博客-Hexo-基于windows10
    下载nodejs #1、访问官网:https://nodejs.org/en-下载LTS版本下载后安装下一步、选择安装路径即可、注意要选择addtopath(这是npm下载包的路径)安装hexo安装成功后在cmd中输入npm验证一下:按Win+R键、弹出后输入cmd创建workspace:需要安装hexo下载的nmp包F:\worksp......