CN114756629A - 基于sql的多源异构数据交互分析引擎及方法 - Google Patents
基于sql的多源异构数据交互分析引擎及方法 Download PDFInfo
- Publication number
- CN114756629A CN114756629A CN202210677318.8A CN202210677318A CN114756629A CN 114756629 A CN114756629 A CN 114756629A CN 202210677318 A CN202210677318 A CN 202210677318A CN 114756629 A CN114756629 A CN 114756629A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- sql
- sub
- plan
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于SQL的多源异构数据交互分析引擎及方法,引擎包括:依次连接的交互控制台、协调器、执行器和源驱动器,方法包括:步骤S1:交互控制台获取SQL数据,反馈SQL执行结果;步骤S2:协调器解析SQL数据生成逻辑计划树,逻辑计划树包括一系列具有依赖关系的任务,将逻辑计划树拆分成能够并发执行的子计划,各子计划包含一组任务,将子计划调度到执行器;步骤S3:执行器根据子计划,通过源驱动器获取数据源数据,进行子计划中任务的执行,并将SQL执行结果反馈交互控制台。实现多源异构数据的交互式关联融合分析的目的,降低了成本,提高了数据准确性、时效性,提升了扩展性和维护性。
Description
技术领域
本发明涉及大数据交互分析技术领域,尤其是涉及一种基于SQL的多源异构数据交互分析引擎及方法。
背景技术
大数据时代,随着数据量的暴增以及数据结构的多样化,为数据分析带来亟需解决的两个核心问题:实时性和关联融合性。对于应用***而言,数据往往分散在多个异构的数据存储结构中,如数据库、搜索引擎、缓存***、消息队列、本地文件等。多源头、异架构的分析场景给数据关联分析带来困难,一次业务分析往往需要多个中间步骤协同完成,实际操作的成本大,数据的准确性和时效性也无法满足要求。近年来,数据湖的提出虽然统一整合了各种数据源,但它以存储为中心的特性在海量多样数据的接入和治理方面也存在诸多不便。如何高效、便捷地针对大规模多源异构数据进行实时分析,成为新的挑战。
发明内容
为解决现有技术的不足,通过加载不同的数据源链接器,实现多源异构数据的交互式关联融合分析的目的,本发明采用如下的技术方案:
一种基于SQL的多源异构数据交互分析引擎,包括依次连接的交互控制台、协调器、执行器和源驱动器;
所述交互控制台,用于获取SQL数据,返回SQL执行结果;
所述协调器,用于解析SQL数据生成逻辑计划树,逻辑计划树包括一系列具有依赖关系的任务,将逻辑计划树拆分成能够并发执行的子计划,各子计划包含一组任务,将子计划调度到执行器;
所述执行器,根据子计划,通过源驱动器获取数据源数据,进行子计划中任务的执行,并将SQL执行结果反馈交互控制台;
所述源驱动器,用于执行器与数据源建立链接,获取数据源数据。
进一步地,所述交互控制台接收并统计SQL数据,多任务执行及控制,监控协调器和/或执行器状态,数据源列表维护与查询,反馈SQL执行结果。本发明的结构采用了经典MVC模式,用户通过客户端进行互动式操作,任务进度与分析结果都能通过控制台实时反馈。
进一步地,所述协调器包括SQL解析模块、元数据接口、任务规划模块、任务调度模块、服务发现模块;
所述SQL解析模块,解析SQL数据生成抽象语法树,并通过元数据接口,获取数据源信息进行校验;
所述元数据接口,用于数据源信息的查询与校验;
所述任务规划模块,将抽象语法树转化为逻辑计划树;
所述任务调度模块,对逻辑计划树中的任务进行拆分,将拆分得到的子计划调度分配到一组执行器;
所述服务发现模块,获取执行器的状态,用于调度过程中,执行器的分配。
进一步地,所述服务发现模块收集各执行器的心跳和任务负载数据,并维护当前可供正常分配的执行器列表,用于任务调度模块根据当前可用的执行器及其负载状态,选取执行器进行子计划分配。
进一步地,所述逻辑计划树中的任务,包括的数据读取任务、数据过滤任务、数据关联任务、分组聚合任务、排序任务、提取任务、输出任务;
所述数据读取任务,是读取数据源中的数据;
所述数据过滤任务,是对读取的数据源数据进行过滤;
所述数据关联任务,是对并行读取、过滤后的数据进行关联;
所述分组聚合任务,是对关联后的数据进行分组;
所述排序任务,是对分组后的数据进行排序;
所述提取任务,是对排序后的数据进行提取;
所述输出任务,是对提取后的数据进行输出。
进一步地,所述执行器包括执行队列、第一判断模块、第二判断模块、第三判断模块、拆分模块、执行模块、合并模块、第四判断模块;
所述执行队列,用于按先后顺序排放执行器获取的子计划;
所述第一判断模块,从执行队列中获取当前任务,若当前任务是所述子计划中的远程类型任务,则开启远程通道传递数据,远程类型任务包括输出任务,用于反馈执行结果,否则,将当前任务输入第二判断模块;
所述第二判断模块,获取并判断当前任务,若当前任务是所述子计划中的数据读取任务,则输入第三判断模块,否则,输入拆分模块;
所述第三判断模块,根据当前任务判断对应的源驱动器是否加载,若加载,则批量读取数据源数据,否则,加载对应的源驱动器,初始化链接池,链接对应数据源;
所述拆分模块,根据当前任务对应的执行器的资源,对当前任务按数据处理规模进行拆分;本发明针对执行器内部的task任务进行合理拆分,保证拆分后的slice子任务所处理的数据块能完全在内存中执行,避免磁盘IO操作,相比于传统MapReduce、Hive等大数据计算框架提高了分析的时效性;子计划的task任务以pipeline流水线的方式在执行器内部异步执行,分布式并发处理和流水式计算为大数据实时分析提供了技术保障;
所述执行模块,根据拆分的子任务进行并发执行;
所述合并模块,对子任务执行得到的中间结果,进行合并、重排、去重,得到当前任务的执行结果并进行反馈;
所述第四判断模块,判断执行队列是否存在未执行任务,若存在,则将未执行任务作为当前任务,进入第一判断模块,否则结束任务的执行。
执行器集群采用了并行处理框架,每个执行器都有独立的计算和存储资源,单节点任务失败不影响整体流程。集群的规模大小可以根据需要处理的数据量动态调整,对亿级大数据的分析也可以做到游刃有余。
进一步地,所述协调器对子计划进行切分,添加远程类型的交换任务,在不同执行器上进行调度时,建立远程通道,用于不同执行器之间的数据交换,数据在分布式环境下需要通过网络进行远程传输。
一种基于SQL的多源异构数据交互分析方法,包括如下步骤:
步骤S1:获取SQL数据;
步骤S2:解析SQL数据生成逻辑计划树,逻辑计划树包括一系列具有依赖关系的任务,将逻辑计划树拆分成能够并发执行的子计划,各子计划包含一组任务;
步骤S3:根据子计划,与数据源建立链接,获取数据源数据,进行子计划中任务的执行,并返回SQL执行结果。
进一步地,所述步骤S3包括如下步骤:
步骤S31,获取子计划,并将子计划中的任务放入执行队列;
步骤S32,从执行队列中获取当前任务并初始化;
步骤S33,判断当前任务是否是远程类型任务,若是远程类型任务,则开启远程通道传递数据,远程类型任务包括输出任务,用于反馈执行结果,否则,进入步骤S34;
步骤S34,判断当前任务是否是子计划中的数据读取任务,若是数据读取任务,则根据当前任务,再判断对应的源驱动器是否加载,若已加载对应的源驱动器,则直接批量读取数据源数据,若未加载对应的源驱动器,则加载对应的数据源驱动,初始化链接池,链接对应数据源,然后批量读取数据源数据,若不是数据读取任务,进入步骤S35;
步骤S35,根据当前任务对应的执行器的资源,对当前任务按数据处理规模进行拆分;本发明针对执行器内部的task任务进行合理拆分,保证拆分后的slice子任务所处理的数据块能完全在内存中执行,避免磁盘IO操作,相比于传统MapReduce、Hive等大数据计算框架提高了分析的时效性;子计划的task任务以pipeline流水线的方式在执行器内部异步执行,分布式并发处理和流水式计算为大数据实时分析提供了技术保障;根据拆分的子任务进行并发执行;对子任务执行得到的中间结果,进行合并、重排、去重,得到当前任务的执行结果并进行反馈;判断执行队列是否存在未执行任务,若存在未执行任务,则将未执行任务作为当前任务,进入步骤S32,否则结束任务的执行。
进一步地,对子计划进行切分,添加远程类型的交换任务,在不同执行器上进行调度时,建立远程通道,用于不同执行器之间的数据交换,数据在分布式环境下需要通过网络进行远程传输。
本发明的优势和有益效果在于:
本发明的基于SQL的多源异构数据交互分析引擎及方法,针对各种主流的异构数据源进行关联融合分析,针对特定的数据源只需加载对应的数据源驱动插件,避免了多源头、异架构的分析场景下,一次业务分析往往需要多个中间步骤协同完成导致的成本提升、数据准确性下降、时效性降低等问题,具有较好的扩展性和维护性。本发明将SQL定义为一颗由多个任务组成的逻辑计划树,并通过合理拆分将子计划调度到分布式集群并发执行,子计划的task任务以pipeline流水线的方式在执行器内部异步执行,分布式并发处理和流水式计算为大数据实时分析提供了技术保障。
附图说明
图1是本发明实施例中交互分析引擎的结构示意图。
图2是本发明实施例中交互分析引擎的控制台页面展示图。
图3是本发明实施例中协调器的逻辑计划树结构示意图。
图4是本发明实施例中交互分析引擎构建方法的流程图。
图5是本发明实施例中执行器的工作节点的执行流程图。
图6是本发明实施例中子任务的多线程调度执行流程图。
图7是本发明中构建交互分析引擎的装置结构示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
如图1所示,基于SQL的多源异构数据交互分析引擎,包括交互控制台、协调器、执行器、源驱动器。
交互控制台用于获取SQL数据,返回SQL执行结果;交互控制台接收并统计SQL数据,多任务执行及控制,监控协调器和/或执行器状态,数据源列表维护与查询,反馈SQL执行结果。
具体地,交互控制台是引擎与用户之间的桥接窗口,它的功能包括接收用户输入、统计SQL执行数据、监控协调器/执行器的节点状态、显示反馈分析结果等。如图2所示,交互控制台页面中,顶部为集群监控功能模块,对队列数据、集群资源、网络流量进行监控,队列数据中分别展示了SQL查询语句的状态(执行、排队、阻塞),集群资源中分别展示了执行器、CPU、内存的状态,网络流量中分别展示了网络任务并发数、行数、字节;左侧为数据源,用于选取对应的待查询的数据源;右侧自上而下依次为SQL查询语句输入界面、查询结果展示界面和查询记录站是界面。
协调器用于解析SQL数据生成逻辑计划树,逻辑计划树包括一系列具有依赖关系的任务,将逻辑计划树拆分成能够并发执行的子计划,各子计划包含一组任务,将子计划调度到执行器;协调器包括SQL解析模块、元数据接口、任务规划模块、任务调度模块、服务发现模块;
SQL解析模块,解析SQL数据生成抽象语法树,并通过元数据接口,获取数据源信息进行校验;
元数据接口,用于数据源信息的查询与校验;
任务规划模块,将抽象语法树转化为逻辑计划树;
任务调度模块,对逻辑计划树中的任务进行拆分,将拆分得到的子计划调度分配到一组执行器;
服务发现模块,获取执行器的状态,用于调度过程中,执行器的分配。
逻辑计划树中的任务,包括的数据读取任务、数据过滤任务、数据关联任务、分组聚合任务、排序任务、提取任务、输出任务;
数据读取任务,是读取数据源中的数据;
数据过滤任务,是对读取的数据源数据进行过滤;
数据关联任务,是对并行读取、过滤后的数据进行关联;
分组聚合任务,是对关联后的数据进行分组;
排序任务,是对分组后的数据进行排序;
提取任务,是对排序后的数据进行提取;
输出任务,是对提取后的数据进行输出。
协调器对子计划进行切分,添加远程类型的交换任务,在不同执行器上进行调度时,建立远程通道,用于不同执行器之间的数据交换。
具体地,协调器负责接收SQL查询请求、解析SQL语句生成逻辑计划树,并将逻辑计划树拆分成可以在分布式集群中并发执行的子计划,最后将子计划按特定算法调度到各个执行器节点执行。协调器包含如下5个子模块控件:
a)SQL解析
SQL解析控件负责SQL语法的解析,它利用altr4(语法生成器工具)将sql解析成一颗抽象语法树并进行一定的优化。然后通过查询元配置信息进行数据源的校验,如有sql查询语句“select t1.rank, count(*) as num from c1.student t1 join c2.family t2on t1.familyId = t2.id where t1.age < 18 and t2.income > 30 group by t1.ranksort by num limit 5;”该语句是对年龄小于18岁且家庭年收入大于30w的学生群体的rank进行分组统计排名。考虑到student和family两份数据分属两个不同的数据源c1和c2,SQL解析控件首先通过antlr4对SQL语法进行解析与优化,然后对c1和c2两个数据源的信息进行检验,查询是否有已经存在的数据源配置的别名为c1和c2,如果没有或配置缺失则直接反馈控制台SQL语句错误。否则通过校验后将SQL抽象语法树传递给任务规划控件。
b)元数据API
元数据API控件是协调器加载源配置文件时生成的,源配置文件指明了所要加载分析的数据源信息。包括数据源的别名、ip地址、端口、schema库、数据表等。元数据API控件在SQL解析时提供了针对用户SQL的源信息查询校验功能。
c)任务规划
任务规划控件将SQL抽象语法树转化为一颗逻辑计划树,如上述SQL语句最终生成的逻辑计划树如图3所示。逻辑计划树是由一系列有依赖关系的task任务组成,上游任务的输入依赖是下游任务的输出。其中,DataScanTask负责具体数据源中数据的读取,左分支和右分支分别对应数据源c1.student和c2.family数据的获取;FilterTask负责对读取的源数据进行过滤操作,左分支为选取学生年龄小于18的数据,右分支为选取学生家庭年收入大于30万的数据;JoinTask对左右两个分支的数据按studentId进行关联操作;AggregateTask是按student.rank进行分组聚合操作;SortTask对rank分组后的统计数据按正序排列操作;LimitTask对排序后的信息取前5位;OutputTask代表最终结果数据的输出任务。
d)任务调度
任务调度控件负责将逻辑计划树的任务进行拆分,并对拆分后的子计划在分布式集群下进行调度。如图3所示,按照逻辑计划树的结构,通过虚线拆分成4个子计划,每个子计划都会根据特定的调度算法分配到一个或多个执行器上执行。不同执行器的数据交换需要通过添加交换任务ExchangeTask,它表明数据在分布式环境下须要通过网络进行远程传输。
e)服务发现
服务发现模块收集各执行器的心跳和任务负载数据,并维护当前可供正常分配的执行器列表,用于任务调度模块根据当前可用的执行器及其负载状态,选取执行器进行子计划分配。
具体地,服务发现控件是协调器的一个辅助控件,它负责收集集群中各个执行器的心跳和任务负载数据,并维护当前可供正常分配的执行器列表。通过服务发现控件,任务调度可以根据当前可用的执行器及其负载状态按特定调度算法择优选取执行节点进行计划分配。
执行器负责子计划的任务执行。多个执行器节点构成了一个分布式工作集群,集群中每个执行器节点是一个已经启动的进程,通过http的方式接收协调器下发分配的子计划。同时,每个执行器节点有自己的状态信息监控,包括任务数&线程池大小、任务执行状况、执行器节点cpu、内存使用率等情况,并定时向协调器发送心跳及负载数据表明执行器节点健康状况。
执行器根据子计划,通过源驱动器获取数据源数据,进行子计划中任务的执行,并将SQL执行结果反馈交互控制台;
执行器包括执行队列、第一判断模块、第二判断模块、第三判断模块、拆分模块、执行模块、合并模块、第四判断模块;
执行队列,用于按先后顺序排放执行器获取的子计划;
第一判断模块,从执行队列中获取当前任务,若当前任务是所述子计划中的远程类型任务,则开启远程通道传递数据,远程类型任务包括输出任务,用于反馈执行结果,否则,将当前任务输入第二判断模块;
第二判断模块,获取并判断当前任务,若当前任务是所述子计划中的数据读取任务,则输入第三判断模块,否则,输入拆分模块;
第三判断模块,根据当前任务判断对应的源驱动器是否加载,若加载,则批量读取数据源数据,否则,加载对应的源驱动器,初始化链接池,链接对应数据源;
拆分模块,根据当前任务对应的执行器的资源,对当前任务按数据处理规模进行拆分;本发明针对执行器内部的task任务进行合理拆分,保证拆分后的slice子任务所处理的数据块能完全在内存中执行,避免磁盘IO操作,相比于传统MapReduce、Hive等大数据计算框架提高了分析的时效性;子计划的task任务以pipeline流水线的方式在执行器内部异步执行,分布式并发处理和流水式计算为大数据实时分析提供了技术保障。
具体地,拆分模块是对任务的输入数据划分为多个slice数据子集,将任务的处理逻辑多线程调度到多个slice数据子集并发执行。输入数据依赖上游任务,当上游任务是DataScanTask时,则根据不同的源数据类型具体实现,例如:针对Hdfs(HadoopDistributed File System),即Hadoop分布式文件***,slice数据子集对应分区数据下的一个sequence序列文件;针对Mysql关系型数据库管理***,slice数据子集对应实体表多行record记录;当上游任务是非DataScanTask时,则对上游的输出数据进行再拆分。拆分逻辑一般考虑当前节点可运行内存大小、task并发数、单个task执行线程池大小、以及单条数据各字段类型组合计算的最大长度等因素。
执行模块,根据拆分的子任务进行并发执行;
合并模块,对子任务执行得到的中间结果,进行合并、重排、去重,得到当前任务的执行结果并进行反馈;
第四判断模块,判断执行队列是否存在未执行任务,若存在,则将未执行任务作为当前任务,进入第一判断模块,否则结束任务的执行。
执行器集群采用了并行处理框架,每个执行器都有独立的计算和存储资源,单节点任务失败不影响整体流程。集群的规模大小可以根据需要处理的数据量动态调整,对亿级大数据的分析也可以做到游刃有余。
源驱动器用于执行器与数据源建立链接,获取数据源数据;
具体地,源驱动器是多源异构数据关联分析的实现基础,每种源驱动器都是某种特定数据源在统一接口下的具体实现,提供了源实例的管理、线程池维护、数据读入与执行SQL操作等一系列操作。源驱动器以插件的方式依附于执行器之上,其加载通过动态绑定方式实现。
如图4所示,基于SQL的多源异构数据交互分析方法,包括如下步骤:
步骤S1:获取SQL数据;
步骤S2:解析SQL数据生成逻辑计划树,逻辑计划树包括一系列具有依赖关系的任务,将逻辑计划树拆分成多个子计划,各子计划包含一组任务;
具体地,多个子计划能够并发执行。子计划是计划树逻辑结构独立的一部分,子计划会被分配到执行器集群执行,如图3所示,“分组聚合任务”是一个子计划,它可以通过hash 拆分group by字段被分配到多个执行器上并发执行(同样一个执行器也可能并发执行了多个不同的子计划),最后通过组合group by字段在集群中完成这个子计划。
步骤S3:根据子计划,与数据源建立链接,获取数据源数据,进行子计划中任务的执行,并返回SQL执行结果。如图5所示,包括如下步骤:
步骤S31,获取子计划,并将子计划中的任务放入执行队列;
步骤S32,从执行队列中获取当前任务并初始化;
步骤S33,判断当前任务是否是远程类型任务,若是远程类型任务,则开启远程通道传递数据,远程类型任务包括输出任务,用于反馈执行结果,否则,进入步骤S34;
步骤S34,判断当前任务是否是子计划中的数据读取任务,若是数据读取任务,则根据当前任务,再判断对应的源驱动器是否加载,若已加载对应的源驱动器,则直接读取数据源数据,若未加载对应的源驱动器,则加载对应的数据源驱动,然后读取数据源数据,若不是数据读取任务,进入步骤S35;
步骤S35,根据当前任务对应的执行器的资源,对当前任务按数据处理规模进行拆分;根据拆分的子任务进行并发执行;对子任务执行得到的中间结果,进行合并、重排、去重,得到当前任务的执行结果并进行反馈;判断执行队列是否存在未执行任务,若存在未执行任务,则将未执行任务作为当前任务,进入步骤S32,否则结束任务的执行。
其中,对子计划进行切分,添加远程类型的交换任务,在不同执行器上进行调度时,建立远程通道,用于不同执行器之间的数据交换。
本发明的实施例中,步骤S3具体地执行过程如下:
步骤S31,获取子计划,并将子计划的任务集按照先后顺序依次放入本地执行队列;
步骤S32,从本地执行队列取出第一个任务,并初始化任务的状态信息;
步骤S33,判断当前任务是否是远程任务类型,远程任务包括OutputTask和ExchangeTask,它们分别是向协调器输出结果或向执行器交换中间数据的任务。其中ExchangeTask是协调器的任务调度控件在切分子计划时添加的逻辑任务,表明数据在分布式环境下须要通过网络在不同的节点进行传输。如果是远程任务,则打开远程通道,通过网络向协调器或其它执行器传递数据,否则,进入步骤S34;
步骤S34,判断当前任务是否是数据源读取任务DataScanTask,如果是数据源读取任务,则再判断对应的数据源驱动是否已经加载,如果已经加载,则直接批量读取目标数据源数据,如果未加载,则加载数据源驱动,初始化链接池,链接对应数据源,然后再批量读取目标数据源数据,如果不是数据源读取任务,则进入步骤S35;
步骤S35,根据节点内存及线程池大小,按任务处理的数据规模对其进行slice拆分。slice是待操作数据的最小执行单元集,如对应Hdfs数据源中每个partition分区下的单个sequence文件,或Mysql数据源中实体表多行record记录,或上游任务输出的一批子数据。对于拆分后的slice数据集,采用多线程调度执行,如图6所示;然后,合并slice中间结果,本地合并重排shuffle去重优化后返回当前task的结果;判断执行器本地队列是否还有任务存在,如没有则结束本流程,若有循环进入步骤S32。
本发明的基于SQL的多源异构数据交互分析引擎及其构建方法,可以针对各种主流的异构数据源进行关联融合分析,针对特定的数据源只需加载对应的数据源驱动插件,扩展性和维护性非常好。本发明将SQL定义为一颗由多个任务组成的逻辑计划树,并通过合理拆分将子计划调度到分布式集群并发执行,子计划的task任务以pipeline流水线的方式在执行器内部异步执行,分布式并发处理和流水式计算为大数据实时分析提供了技术保障。
本发明的结构采用了经典MVC模式,用户通过客户端进行互动式操作,任务进度与分析结果都能通过控制台实时反馈。执行器集群采用了并行处理框架,每个执行器都有独立的计算和存储资源,单节点任务失败不影响整体流程。集群的规模大小可以根据需要处理的数据量动态调整,对亿级大数据的分析也可以做到游刃有余。
本发明针对执行器内部的task任务进行合理拆分,保证拆分后的slice子任务所处理的数据块能完全在内存中执行,避免磁盘IO操作,相比于传统MapReduce、Hive等大数据计算框架提高了分析的时效性。
与前述基于SQL的多源异构数据交互分析方法的实施例相对应,本发明还提供了基于SQL的多源异构数据交互分析装置的实施例。
参见图7,本发明实施例提供的基于SQL的多源异构数据交互分析装置,包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的基于SQL的多源异构数据交互分析方法。
本发明基于SQL的多源异构数据交互分析装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本发明基于SQL的多源异构数据交互分析装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于SQL的多源异构数据交互分析方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。
Claims (10)
1.一种基于SQL的多源异构数据交互分析引擎,包括依次连接的交互控制台、协调器、执行器和源驱动器,其特征在于:
所述交互控制台,用于获取SQL数据,返回SQL执行结果;
所述协调器,用于解析SQL数据生成逻辑计划树,逻辑计划树包括一系列具有依赖关系的任务,将逻辑计划树拆分成能够并发执行的子计划,各子计划包含一组任务,将子计划调度到执行器;
所述执行器,根据子计划,通过源驱动器获取数据源数据,进行子计划中任务的执行,并将SQL执行结果反馈交互控制台;
所述源驱动器,用于执行器与数据源建立链接,获取数据源数据。
2.根据权利要求1所述的基于SQL的多源异构数据交互分析引擎,其特征在于:所述交互控制台接收并统计SQL数据,多任务执行及控制,监控协调器和/或执行器状态,数据源列表维护与查询,反馈SQL执行结果。
3.根据权利要求1所述的基于SQL的多源异构数据交互分析引擎,其特征在于:所述协调器包括SQL解析模块、元数据接口、任务规划模块、任务调度模块、服务发现模块;
所述SQL解析模块,解析SQL数据生成抽象语法树,并通过元数据接口,获取数据源信息进行校验;
所述元数据接口,用于数据源信息的查询与校验;
所述任务规划模块,将抽象语法树转化为逻辑计划树;
所述任务调度模块,对逻辑计划树中的任务进行拆分,将拆分得到的子计划调度分配到一组执行器;
所述服务发现模块,获取执行器的状态,用于调度过程中,执行器的分配。
4.根据权利要求3所述的基于SQL的多源异构数据交互分析引擎,其特征在于:所述服务发现模块收集各执行器的心跳和任务负载数据,并维护当前可供正常分配的执行器列表,用于任务调度模块根据当前可用的执行器及其负载状态,选取执行器进行子计划分配。
5.根据权利要求1所述的基于SQL的多源异构数据交互分析引擎,其特征在于:所述逻辑计划树中的任务,包括的数据读取任务、数据过滤任务、数据关联任务、分组聚合任务、排序任务、提取任务、输出任务;
所述数据读取任务,是读取数据源中的数据;
所述数据过滤任务,是对读取的数据源数据进行过滤;
所述数据关联任务,是对并行读取、过滤后的数据进行关联;
所述分组聚合任务,是对关联后的数据进行分组;
所述排序任务,是对分组后的数据进行排序;
所述提取任务,是对排序后的数据进行提取;
所述输出任务,是对提取后的数据进行输出。
6.根据权利要求1所述的基于SQL的多源异构数据交互分析引擎,其特征在于:所述执行器包括执行队列、第一判断模块、第二判断模块、第三判断模块、拆分模块、执行模块、合并模块、第四判断模块;
所述执行队列,用于排放执行器获取的子计划;
所述第一判断模块,从执行队列中获取当前任务,若当前任务是所述子计划中的远程类型任务,则开启远程通道传递数据,远程类型任务包括输出任务,用于反馈执行结果,否则,将当前任务输入第二判断模块;
所述第二判断模块,获取并判断当前任务,若当前任务是所述子计划中的数据读取任务,则输入第三判断模块,否则,输入拆分模块;
所述第三判断模块,根据当前任务判断对应的源驱动器是否加载,若加载,则读取数据源数据,否则,加载对应的源驱动器;
所述拆分模块,根据当前任务对应的执行器的资源,对当前任务按数据处理规模进行拆分;
所述执行模块,根据拆分的子任务进行并发执行;
所述合并模块,对子任务执行得到的中间结果,进行合并、重排、去重,得到当前任务的执行结果并进行反馈;
所述第四判断模块,判断执行队列是否存在未执行任务,若存在,则将未执行任务作为当前任务,进入第一判断模块,否则结束任务的执行。
7.根据权利要求1或6所述的基于SQL的多源异构数据交互分析引擎,其特征在于:所述协调器对子计划进行切分,添加远程类型的交换任务,在不同执行器上进行调度时,建立远程通道,用于不同执行器之间的数据交换。
8.一种基于SQL的多源异构数据交互分析方法,其特征在于包括如下步骤:
步骤S1:获取SQL数据;
步骤S2:解析SQL数据生成逻辑计划树,逻辑计划树包括一系列具有依赖关系的任务,将逻辑计划树拆分成能够并发执行的子计划,各子计划包含一组任务;
步骤S3:根据子计划,与数据源建立链接,获取数据源数据,进行子计划中任务的执行,并返回SQL执行结果。
9.根据权利要求8所述的基于SQL的多源异构数据交互分析方法,其特征在于:所述步骤S3包括如下步骤:
步骤S31,获取子计划,并将子计划中的任务放入执行队列;
步骤S32,从执行队列中获取当前任务并初始化;
步骤S33,判断当前任务是否是远程类型任务,若是远程类型任务,则开启远程通道传递数据,远程类型任务包括输出任务,用于反馈执行结果,否则,进入步骤S34;
步骤S34,判断当前任务是否是子计划中的数据读取任务,若是数据读取任务,则根据当前任务,再判断对应的源驱动器是否加载,若已加载对应的源驱动器,则直接读取数据源数据,若未加载对应的源驱动器,则加载对应的数据源驱动,然后读取数据源数据,若不是数据读取任务,进入步骤S35;
步骤S35,根据当前任务对应的执行器的资源,对当前任务按数据处理规模进行拆分;根据拆分的子任务进行并发执行;对子任务执行得到的中间结果,进行合并、重排、去重,得到当前任务的执行结果并进行反馈;判断执行队列是否存在未执行任务,若存在未执行任务,则将未执行任务作为当前任务,进入步骤S32,否则结束任务的执行。
10.根据权利要求8或9所述的基于SQL的多源异构数据交互分析方法,其特征在于:对所述子计划进行切分,添加远程类型的交换任务,在不同执行器上进行调度时,建立远程通道,用于不同执行器之间的数据交换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210677318.8A CN114756629B (zh) | 2022-06-16 | 2022-06-16 | 基于sql的多源异构数据交互分析引擎及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210677318.8A CN114756629B (zh) | 2022-06-16 | 2022-06-16 | 基于sql的多源异构数据交互分析引擎及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114756629A true CN114756629A (zh) | 2022-07-15 |
CN114756629B CN114756629B (zh) | 2022-10-21 |
Family
ID=82336175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210677318.8A Active CN114756629B (zh) | 2022-06-16 | 2022-06-16 | 基于sql的多源异构数据交互分析引擎及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114756629B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056316A (zh) * | 2023-10-10 | 2023-11-14 | 之江实验室 | 一种多源异构数据关联查询加速方法、装置及设备 |
CN117648341A (zh) * | 2023-11-21 | 2024-03-05 | 上海金仕达卫宁软件科技有限公司 | 在有限资源基于磁盘内存快速组装数据的方法及*** |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050131879A1 (en) * | 2003-12-16 | 2005-06-16 | Oracle International Corporation | Parallel single cursor model on multiple-server configurations |
WO2006005715A1 (en) * | 2004-07-09 | 2006-01-19 | Institut Curie | System for interrogating heterogeneous databases and method for interrogation |
CN102609451A (zh) * | 2012-01-11 | 2012-07-25 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
US20180089268A1 (en) * | 2016-09-28 | 2018-03-29 | Electronics And Telecommunications Research Institute | Method and apparatus for optimizing query in data engine |
CN108363746A (zh) * | 2018-01-26 | 2018-08-03 | 福建星瑞格软件有限公司 | 一种支持多源异构数据的统一sql查询*** |
CN108920261A (zh) * | 2018-05-23 | 2018-11-30 | 中国航天***科学与工程研究院 | 一种适于大规模并行数据处理任务的两级自适应调度方法 |
CN109284302A (zh) * | 2018-08-10 | 2019-01-29 | 新华三大数据技术有限公司 | 数据处理方法及装置 |
CN111625696A (zh) * | 2020-07-28 | 2020-09-04 | 北京升鑫网络科技有限公司 | 多源数据分析引擎的分布式调度方法、计算节点及*** |
US20200372027A1 (en) * | 2019-05-21 | 2020-11-26 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Query processing method, query processing system, server and computer readable medium |
US20200409977A1 (en) * | 2017-09-08 | 2020-12-31 | Guangdong Construction Information Center | Generic Multi-Source Heterogeneous Large-Scale Data Synchronization Client-Server Method |
CN112527876A (zh) * | 2020-12-08 | 2021-03-19 | 国网四川省电力公司信息通信公司 | 基于多源异构数据分析的统一数据库访问*** |
CN112579625A (zh) * | 2020-09-28 | 2021-03-30 | 京信数据科技有限公司 | 多源异构数据治理方法及装置 |
CN112579626A (zh) * | 2020-09-28 | 2021-03-30 | 京信数据科技有限公司 | 多源异构sql查询引擎的构建方法及装置 |
CN113032423A (zh) * | 2021-05-31 | 2021-06-25 | 北京谷数科技股份有限公司 | 基于多数据引擎动态装载的查询方法和*** |
-
2022
- 2022-06-16 CN CN202210677318.8A patent/CN114756629B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050131879A1 (en) * | 2003-12-16 | 2005-06-16 | Oracle International Corporation | Parallel single cursor model on multiple-server configurations |
WO2006005715A1 (en) * | 2004-07-09 | 2006-01-19 | Institut Curie | System for interrogating heterogeneous databases and method for interrogation |
CN102609451A (zh) * | 2012-01-11 | 2012-07-25 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
US20180089268A1 (en) * | 2016-09-28 | 2018-03-29 | Electronics And Telecommunications Research Institute | Method and apparatus for optimizing query in data engine |
US20200409977A1 (en) * | 2017-09-08 | 2020-12-31 | Guangdong Construction Information Center | Generic Multi-Source Heterogeneous Large-Scale Data Synchronization Client-Server Method |
CN108363746A (zh) * | 2018-01-26 | 2018-08-03 | 福建星瑞格软件有限公司 | 一种支持多源异构数据的统一sql查询*** |
CN108920261A (zh) * | 2018-05-23 | 2018-11-30 | 中国航天***科学与工程研究院 | 一种适于大规模并行数据处理任务的两级自适应调度方法 |
CN109284302A (zh) * | 2018-08-10 | 2019-01-29 | 新华三大数据技术有限公司 | 数据处理方法及装置 |
US20200372027A1 (en) * | 2019-05-21 | 2020-11-26 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Query processing method, query processing system, server and computer readable medium |
CN111625696A (zh) * | 2020-07-28 | 2020-09-04 | 北京升鑫网络科技有限公司 | 多源数据分析引擎的分布式调度方法、计算节点及*** |
CN112579625A (zh) * | 2020-09-28 | 2021-03-30 | 京信数据科技有限公司 | 多源异构数据治理方法及装置 |
CN112579626A (zh) * | 2020-09-28 | 2021-03-30 | 京信数据科技有限公司 | 多源异构sql查询引擎的构建方法及装置 |
CN112527876A (zh) * | 2020-12-08 | 2021-03-19 | 国网四川省电力公司信息通信公司 | 基于多源异构数据分析的统一数据库访问*** |
CN113032423A (zh) * | 2021-05-31 | 2021-06-25 | 北京谷数科技股份有限公司 | 基于多数据引擎动态装载的查询方法和*** |
Non-Patent Citations (2)
Title |
---|
CHAO-RUI CHANG ET AL.: "HSQL: A Highly Scalable Cloud Database for Multi-user Query Processing", 《2012 IEEE FIFTH INTERNATIONAL CONFERENCE ON CLOUD COMPUTING》 * |
屈志坚等: "配电网监测大数据的Impala快速查询技术", 《电力科学与技术学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056316A (zh) * | 2023-10-10 | 2023-11-14 | 之江实验室 | 一种多源异构数据关联查询加速方法、装置及设备 |
CN117056316B (zh) * | 2023-10-10 | 2024-01-26 | 之江实验室 | 一种多源异构数据关联查询加速方法、装置及设备 |
CN117648341A (zh) * | 2023-11-21 | 2024-03-05 | 上海金仕达卫宁软件科技有限公司 | 在有限资源基于磁盘内存快速组装数据的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN114756629B (zh) | 2022-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239335B (zh) | 分布式***的作业调度***及方法 | |
US20220171781A1 (en) | System And Method For Analyzing Data Records | |
Marcu et al. | Spark versus flink: Understanding performance in big data analytics frameworks | |
CN107679192B (zh) | 多集群协同数据处理方法、***、存储介质及设备 | |
US9639575B2 (en) | Method and system for processing data queries | |
CN114756629B (zh) | 基于sql的多源异构数据交互分析引擎及方法 | |
CN106897322A (zh) | 一种数据库和文件***的访问方法和装置 | |
US20120036146A1 (en) | Apparatus for elastic database processing with heterogeneous data | |
CN113360554B (zh) | 一种数据抽取、转换和加载etl的方法和设备 | |
CN104598299A (zh) | 用于对每条接收数据执行聚合处理的***和方法 | |
CN113886111B (zh) | 一种基于工作流的数据分析模型计算引擎***及运行方法 | |
CN107818181A (zh) | 基于Plcient交互式引擎的索引方法及其*** | |
Chen et al. | Pisces: optimizing multi-job application execution in mapreduce | |
CN112182031B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN116974994A (zh) | 一种基于集群的高效能文件协作*** | |
Davidson et al. | Technical review of apache flink for big data | |
CN109033196A (zh) | 一种分布式数据调度***及方法 | |
KR102605932B1 (ko) | 워크 스페이스 기반으로 비정형 데이터 및 정형 데이터에 대한 데이터 처리 서비스를 제공하는 방법 및 이러한 방법을 수행하는 서버 | |
CN117390040B (zh) | 基于实时宽表的业务请求处理方法、设备及存储介质 | |
US11663216B2 (en) | Delta database data provisioning | |
KR102680768B1 (ko) | 비정형 데이터에 대한 바이너리화를 수행하는 방법 및 이러한 방법을 수행하는 장치 | |
CN113553320B (zh) | 数据质量监控方法及装置 | |
KR102635613B1 (ko) | 비정형 데이터에 대한 임베딩 방법 및 이러한 방법을수행하는 장치 | |
KR102668905B1 (ko) | 서버 마이그레이션 방법 및 이러한 방법을 수행하는 장치 | |
KR102636753B1 (ko) | 워크스페이스 마이그레이션 방법 및 이러한 방법을수행하는 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |