CN113032446A - 一种分布式查询***的数据处理方法和装置 - Google Patents
一种分布式查询***的数据处理方法和装置 Download PDFInfo
- Publication number
- CN113032446A CN113032446A CN201911351500.9A CN201911351500A CN113032446A CN 113032446 A CN113032446 A CN 113032446A CN 201911351500 A CN201911351500 A CN 201911351500A CN 113032446 A CN113032446 A CN 113032446A
- Authority
- CN
- China
- Prior art keywords
- data
- nodes
- node
- distribution information
- configuration identifier
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000009826 distribution Methods 0.000 claims abstract description 141
- 238000000034 method Methods 0.000 claims description 61
- 238000012545 processing Methods 0.000 claims description 32
- 238000005192 partition Methods 0.000 claims description 12
- 238000013467 fragmentation Methods 0.000 claims description 11
- 238000006062 fragmentation reaction Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 9
- 238000013075 data extraction Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 238000004590 computer program Methods 0.000 description 7
- 238000001914 filtration Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种分布式查询***的数据处理方法及装置,通过获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息,根据第二数据的分布信息,将第一数据配置于各个第一节点中,确定第一数据在第一节点中的数据范围,根据数据范围,并行从多个第二节点中提取第二数据,从而实现了根据第二数据的分布信息,将第一数据配置于各个第一节点中,使得第一数据在第一节点上的分布与第二数据在第二节点上的分布保持一致,避免了在***中对第二数据进行分布配置,并且根据数据范围对第二数据进行提取,避免了进行数据的全量提取,提高了***运行的效率。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种分布式查询***的数据处理方法和一种分布式查询***的数据处理装置。
背景技术
目前,跨数据库查询为不同环境下的在线异构数据源,提供及时的关联查询服务。不论数据库是MySQL、SQLServer、PostgreSQL还是Redis,不论数据库实例部署在哪个Region哪个环境,通过一条SQL就能实现这些数据库之间的关联查询。
其中,跨库查询服务中接入的数据源种类越来越多,当需要获取这些数据源进行Join时,如果以单个JDBC(Java DataBase Connectivity,Java数据库连接)去读取数据,将耗费大量时间。此外,在进行Join运算时,还需要对数据进行Shuffle操作,耗费大量网络开销,Join作业看起来会运行得非常缓慢,甚至可能因为数据量过大导致内存溢出。
发明内容
本申请实施例所要解决的技术问题是提供一种分布式查询***的数据查询方法,以解决现有技术中数据处理过程中对大表数据进行全量读取和Shuffle导致的***性能低下的问题。
相应的,本申请实施例还提供了一种分布式查询***的数据查询装置,用以保证上述方法的实现及应用。
为了解决上述问题,本申请公开了一种分布式查询***的数据处理方法,所述分布式查询***包括多个第一节点,并与至少两个数据通信连接,所述方法包括:
获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息;
根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中;
确定所述第一数据在所述第一节点中的数据范围;
根据所述数据范围,并行所述第二数据源的多个第二节点中提取所述第二数据。
可选地,所述根据所述数据范围,并行所述第二数据源的多个第二节点中提取所述第二数据,包括:
确定所述第一数据与所述第二数据之间的Join连接条件;
按照所述Join连接条件,并行从所述多个第二节点中,提取与所述数据范围对应的第二数据。
可选地,所述根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中,包括:
分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中;
其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
可选地,所述第一数据为小表数据,所述按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中,包括:
将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;
从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;
按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
可选地,所述数据范围包括各个所述第一子表数据对应的取值范围,所述第二数据为大表数据,所述大表数据包括与各个所述第二节点对应的第二子表数据,所述按照所述Join连接条件,并行从所述多个第二节点中,获取与所述数据范围对应的第二数据,包括:
采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据。
可选地,所述分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识,包括:
获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;
当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;
当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
可选地,还包括:
分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果;
将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
本申请实施例还公开了一种分布式查询***的数据查询方法,所述分布式查询***与至少一个第二数据源进行通信连接;所述分布式查询***中包括多个第一节点,所述第一节点中包括采用所述第二数据源的分布信息进行配置的第一数据;所述第二数据源包括多个第二节点;所述方法包括:
确定所述第一数据在所述第一节点中的数据范围;
多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点;
将所述多个第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果。
可选地,所述多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点,包括:
确定所述第一数据与所述第二数据之间的Join连接条件;
多个所述第一节点按照所述Join连接条件,并行将包含所述数据范围的数据查询请求发送至所述多个第二节点。
可选地,还包括:
获取所述第二数据源中第二数据的分布信息;
根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中。
可选地,所述根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中,包括:
分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中;
其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
可选地,所述第一数据为小表数据,所述按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中,包括:
将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;
从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;
按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
可选地,所述数据范围包括各个所述第一子表数据对应的取值范围,所述第二数据为大表数据,所述大表数据包括与各个所述第二节点对应的第二子表数据,所述多个所述第一节点按照所述Join连接条件,并行将包含所述数据范围的数据查询请求发送至所述多个第二节点,包括:
采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据。
可选地,所述分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识,包括:
获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;
当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;
当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
可选地,所述将所述第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果,包括:
分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果;
将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
本申请实施例还公开了一种分布式查询***的数据处理装置,所述分布式查询***包括多个第一节点,并与至少两个数据通信连接,所述装置包括:
数据与信息获取模块,用于获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息;
数据配置模块,用于根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中;
数据范围确定模块,用于确定所述第一数据在所述第一节点中的数据范围;
数据提取模块,用于根据所述数据范围,并行所述第二数据源的多个第二节点中提取所述第二数据。
可选地,所述数据提取模块包括:
连接条件确定子模块,用于确定所述第一数据与所述第二数据之间的Join连接条件;
数据提取子模块,用于按照所述Join连接条件,并行从所述多个第二节点中,提取与所述数据范围对应的第二数据。
可选地,所述数据配置模块包括:
第一标识生成子模块,用于分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
第二标识生成子模块,用于分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
数据配置子模块,用于按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中;
其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
可选地,所述第一数据为小表数据,所述数据配置子模块具体用于:
将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;
从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;
按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
可选地,所述数据范围包括各个所述第一子表数据对应的取值范围,所述第二数据为大表数据,所述大表数据包括与各个所述第二节点对应的第二子表数据,所述数据提取子模块具体用于:
采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据。
可选地,所述第一标识生成子模块具体用于:
获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;
当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;
当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
可选地,还包括:
子表数据运算模块,用于分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果;
连接结果组合模块,用于将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
本申请实施例还公开了一种分布式查询***的数据查询装置,所述分布式查询***与至少一个第二数据源进行通信连接;所述分布式查询***中包括多个第一节点,所述第一节点中包括采用所述第二数据源的分布信息进行配置的第一数据;所述第二数据源包括多个第二节点;所述装置包括:
数据范围确定模块,用于确定所述第一数据在所述第一节点中的数据范围;
查询请求发送模块,用于多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点;
查询结果生成模块,用于将所述多个第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果。
可选地,所述查询请求发送模块包括:
连接条件确定子模块,用于确定所述第一数据与所述第二数据之间的Join连接条件;
查询请求发送子模块,用于多个所述第一节点按照所述Join连接条件,并行将包含所述数据范围的数据查询请求发送至所述多个第二节点。
可选地,还包括:
分布信息获取模块,用于获取所述第二数据源中第二数据的分布信息;
数据配置模块,用于根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中。
可选地,所述数据配置模块包括:
第一标识生成子模块,用于分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
第二标识生成子模块,用于分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
数据配置子模块,用于按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中;
其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
可选地,所述第一数据为小表数据,所述数据配置子模块具体用于:
将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;
从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;
按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
可选地,所述数据范围包括各个所述第一子表数据对应的取值范围,所述第二数据为大表数据,所述大表数据包括与各个所述第二节点对应的第二子表数据,所述查询请求发送子模块具体用于:
采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据。
可选地,所述第一标识生成子模块具体用于:
获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;
当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;
当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
可选地,所述查询结果生成模块包括:
节点连接子模块,用于分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果;
***连接子模块,用于将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
本申请实施例还公开了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如上所述的一个或多个的方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的一个或多个的方法。
本申请实施例包括以下优点:
在本申请实施例中,通过获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息,根据第二数据的分布信息,将第一数据配置于各个第一节点中,确定第一数据在第一节点中的数据范围,根据数据范围,并行从多个第二节点中提取第二数据,从而实现了根据第二数据的分布信息,将第一数据配置于各个第一节点中,使得第一数据在第一节点上的分布与第二数据在第二节点上的分布保持一致,避免了在***中对第二数据进行分布配置,并且根据数据范围对第二数据进行提取,避免了进行数据的全量提取,提高了***运行的效率。
附图说明
图1是本申请的一种分布式查询***的数据处理方法实施例一的步骤流程图;
图2是本申请的一种分布式查询***的数据处理方法实施例二的步骤流程图;
图3是本申请实施例中跨源数据处理的示意图;
图4是本申请的一种分布式查询***的数据查询方法实施例三的步骤流程图;
图5是本申请的一种分布式查询***的数据处理装置实施例一的结构框图;
图6是本申请的一种分布式查询***的数据查询装置实施例二的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请的一种分布式查询***的数据处理方法实施例一的步骤流程图,所述分布式查询***包括多个第一节点,并与至少两个数据通信连接。
随着大数据技术的发展,数据源种类越来越多,用户对数据的获取、分析、预测等需求日益增加。并且,用户往往需要对不同类型的数据、不同数据量的数据进行连接、组合以及分析等等,以根据数据的处理结果完成相应的业务服务。
作为一种示例,当用户拥有第一数据源实例以及第二数据源实例时,如第一数据源实例可以为RDS(Relational Database Service,关系型数据库服务)MySQL的数据库实例等,第二数据源实例可以为ADB(Analytic Data Base,分析型数据库)等,则前者可以用于支撑用户的在线业务***,可以为单机版本,存储于第一数据源中的第一数据的数量不大;而后者可以用于离线决策分析,第二数据源可以为分布式数据库,需要部署在多台机器上,从而存储大量的数据,并且,在ADB上的数据通常以分片、分区以及分桶等方式分散于各第二节点上。则在用户需要将离线和在线数据需要进行关联时,可以通过分布式查询***进行实现。
具体的,分布式查询***(下述查询***)可以包括多个第一节点(Node1、Node2...NodeN),N可以为分布式查询***上节点的数量,查询***可以通过JDBC、ODBC(Open Database Connectivity,开放数据库连接)等方式与至少一个第一数据源以及至少一个第二数据域进行通信连接。
查询***可以通过单个JDBC(或ODBC)与第一数据源、第二数据源进行通信连接,读取第一数据源上的第一数据,以及第二数据源上的第二数据。接着查询***对第一数据与第二数据进行Shuffle操作,使得相同的Join Key的数据分布在同一个计算节点上,然后每个计算节点运行单机的Join算法,如散列连接Hash Join、排序合并连接Sort MergeJoin等等,并产生Join结果。然而,在该跨源数据处理过程中,第二数据的数据量较大,查询***通过单个JDBC连接读取第二数据耗时长,而读取数据量较小的第一数据的任务早已完成,并且,查询***还需要对第二数据进行Shuffle操作,网络开销巨大,进一步增加了数据处理的时长,大大降低了数据处理的效率。因此,通过本申请实施例中分布式查询***的数据处理方法可以有效解决上述问题,具体可以包括如下步骤:
步骤101,获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息;
在本申请实施例中,查询***可以从第一数据源中获取第一数据,以及获取第二数据源中第二数据的分布信息。
在具体实现中,第一数据可以为小表数据(下述小表),或者某个查询中间结果,则查询***可以从第一数据源中获取第一数据。第二数据可以为大表数据(下述大表),大表可以以特定分布方式分布于第二数据源的多个第二节点中,如可以按照水平分片、分桶以及分区等当时进行分布,从而大表可以分布在第二数据源中的多个机器上(Server1、Server2...ServerM),M可以为第二数据源的机器数量。当第二数据在第二数据源中分布完毕后,可以得到相应的分布信息,其中,分布信息可以为分片策略、分桶策略以及分区策略中的至少一种。
步骤102,根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中;
在具体实现中,查询***获取了大表的分布信息后,可以根据该分布信息,生成针对小表的Shuffle策略,并采用该Shuffle策略将小表配置于查询***的多个第一节点中,从而实现了根据大表在第二数据源中的分布方式,对小表进行Shuffle操作,使得小表在查询***的分布方式与大表在第二数据源中的分布方式保持一致,进而避免了查询***在获取大表的过程中,对大表进行Shuffle操作,降低了数据处理的时长,提高了数据处理效率。
步骤103,确定所述第一数据在所述第一节点中的数据范围;
在具体实现中,采用大表的分布信息将小表配置于各第一节点后,各个第一节点可以获取本地中小表的数据范围。其中,该数据范围可以为节点中小表的数据列取值范围,和/或,数据行取值范围等等。
步骤104,根据所述数据范围,并行所述第二数据源的多个第二节点中提取所述第二数据。
在具体实现中,查询***中各个第一节点,可以根据数据范围,生成一个针对大表的过滤条件,然后各个节点依据该过滤条件,并行从第二数据源中的多个第二节点中提取大表的数据。
具体的,由于小表的数据已经读取到了查询***中,并且按照大表在第二数据源中的分布方式,在查询***中进行了Shuffle操作。因此,当小表的数据配置在查询***的节点一,大表的数据也配置在第二数据源的机器一,从而各个第一节点可以通过过滤条件,从对应的第二节点中读取与该过滤条件对应的大表的数据,一方面避免了在数据处理过程中,对大表的数据进行Shuffle操作,进一步降低了数据处理的时长,提高了数据处理效率。
在本申请实施例中,通过获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息,根据第二数据的分布信息,将第一数据配置于各个第一节点中,确定第一数据在第一节点中的数据范围,根据数据范围,并行从多个第二节点中提取第二数据,从而实现了根据第二数据的分布信息,将第一数据配置于各个第一节点中,使得第一数据在第一节点上的分布与第二数据在第二节点上的分布保持一致,避免了在***中对第二数据进行分布配置,在数据处理过程中,大大地缓解了数据倾斜的情况,并且根据数据范围对第二数据进行提取,避免了进行数据的全量提取,提高了***运行的效率。
参照图2,示出了本申请的一种分布式查询***的数据处理方法实施例二的步骤流程图,并与至少两个数据通信连接,具体可以包括如下步骤:
步骤201,获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息;
在具体实现中,查询***可以从第一数据源S1获取小表数据T1或某个中间查询结果,以及获取第二数据源S2中大表数据T2的分布信息,其中,分布信息可以包括分片策略、分区策略以及分桶策略中的至少一种。
步骤202,根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中;
在具体实现中,查询***获取了大表的分布信息后,可以根据该分布信息,生成针对小表的Shuffle策略,并采用该Shuffle策略将小表配置于查询***的多个第一节点中,从而实现了根据大表在第二数据源中的分布方式,对小表进行Shuffle操作,使得小表在查询***的分布方式与大表在第二数据源中的分布方式保持一致,进而避免了查询***在获取大表的过程中,对大表进行Shuffle操作,降低了数据处理的时长,提高了数据处理效率。
在本申请实施例的一种可选实施例中,步骤202可以包括如下子步骤:
子步骤S11,分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
在具体实现中,当用户进行数据处理时,可以在查询***中输入Join连接条件,该连接条件可以为T1.C1=T2.C2。其中,T1表示第一数据源中的小表,或某个中间查询结果,T2表示第二数据源中的大表,C1可以为第二配置标识,如连接键Join Key,C2可以为第一配置标识,如分片策略、分区策略以及分桶策略等等。
当查询***得到大表的分布信息后,可以对分布信息进行计算,生成小表的第一配置标识。具体的,查询***可以获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
在本申请实施例的一种示例中,查询***中第一节点的数量为N,第二数据源中第二节点的数量为M,则查询***得到大表的分布信息后,可以第一节点与第二节点之间的数量关系,采用分布信息进行第一配置标识的计算。具体的,可以将第一数量信息N与第二数量信息M进行取模运算,当第一节点的数量大于第二节点的数量时,则取M,接着对大表的某一列的数据进行哈希运算,然后进行取模运算,即Hash(C2)Mod M;当第一节点的数量小于第二节点的数量时,则取N,接着对大表的某一列的数据进行哈希运算,然后进行取模运算,即Hash(C2)Mod N,从而得到针对小表的配置标识。
需要说明的是,本申请实施例包括但不限于上述示例,可以理解的是,在本发明实施例的思想指导下,本领域技术人员还可以采用范围运算Range对配置标识进行运算,本申请对此不作限制。
子步骤S12,分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
在具体实现中,由于Join连接条件为T1.C1=T2.C2,则用户可以在输入的查询语句中写好Join Key,即C1,然后采用第一配置标识C2与Join连接条件,确定针对第一节点的第二配置标识。
具体的,根据Join连接条件,当查询***中第一节点的第一数量信息N大于第二数据源中第二节点的第二数量信息M时,Hash(C2)Mod M,则Hash(C1)Mod M;当查询***中第一节点的第一数量信息N小于第二数据源中第二节点的第二数量信息M时,Hash(C2)Mod N,则Hash(C1)Mod N,从而使得第一数据在查询***中的分布与第二数据在第二数据源的分布方式保持一致。
子步骤S13,按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中。
在具体实现中,查询***可以按照第二配置标识C1的序列,将小表或某个中间查询结果分别配置于与C1对应的节点中,从而使得第一数据按照C1列的值重新分布于查询***的各个节点中,使得第一数据的分布与第二在第二数据源中的分布保持一致。
具体的,查询***可以将小表数据拆分成与各个第二配置标识对应的第一子表数据,接着从第一节点中,分别确定与各个第二配置标识对应的目标节点,然后按照第二配置标识的序列,将各个第一子表数据配置于目标节点中。
步骤203,确定所述第一数据在所述第一节点中的数据范围;
在具体实现中,采用大表的分布信息将小表,或中间查询结果配置于各第一节点后,各个第一节点可以获取本地中小表或中间查询结果的数据范围。其中,该数据范围可以为节点中小表或中间查询结果的数据列取值范围,和/或,数据行取值范围等等。
步骤204,根据所述数据范围,并行所述第二数据源的多个第二节点中提取所述第二数据;
在具体实现中,查询***可以根据第一数据与第二数据之间的Join连接条件,接着按照该Join连接条件,并行从所述多个第二节点中,提取与所述数据范围对应的第二数据。
具体的,由于小表或中间查询结果的数据已经读取到了查询***中,并且按照大表在第二数据源中的分布方式,在查询***中进行了Shuffle操作。因此,当小表或中间查询结果的数据配置在查询***的节点一,大表的数据也配置在第二数据源的机器一。
其中,数据范围可以包括各个所述第一子表数据对应的取值范围,大表采用了分片、分区以及分桶等方式,生成了多个第二子表数据,并分布于第二数据源的多个第二节点中,则查询***可以采用Join连接条件,并行从多个与第一节点对应的第二节点中,提取与取值范围对应的第二子表数据,从而各个第一节点可以通过过滤条件,从对应的第二节点中读取与该过滤条件对应的大表的数据,一方面避免了在数据处理过程中,对大表的数据进行Shuffle操作,进一步降低了数据处理的时长,提高了数据处理效率,另一方面避免了对第二数据进行全量提取,提高了提取效率。
步骤205,将所述第一数据与所述第二数据进行连接,生成针对所述第一数据与所述第二数据的连接结果。
在本申请实施例中,查询***中获取了第一数据与第二数据的第一节点,可以对第一数据与第二数据进行Join本地运算,从而生成针对第一数据与第二数据的连接结果。
在具体实现中,当第一数据为小表时,查询***可以分别对各个第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果,然后将各个第一节点对应的节点连接结果进行组合,生成针对小表数据以及大表数据的查询结果。需要说明的是,当第一数据为中间查询结果时,其Join运算过程与小表的Join运算过程相同,在此不再赘述。
在本申请实施例的一种示例中,如图3所示,示出了本申请实施例中跨源数据处理的示意图,查询***包括N个节点(Node1、Node2...NodeN),第二数据源包括多个机器Server。其中,T1表可以为来自第一数据源中的小表数据,或,某个查询中间结果(下述以小表为例进行示例性说明),T2表可以按照水平分片方式进行了分片(还可以为分区、分桶等),如Hash或Range等,从而T2表数据分布在第二数据源的多个机器上,Server1、Server2...ServerM,M为第二数据源的机器数量。此外,在本实施例中,考虑Join Key与T2表数据中的分片策略相同的场景,且Join条件为Equi-Join,即Join连接条件为T1.C1=T2.C2。
首先,查询***可以通过JDBC、ODBC等方式从第一数据源中获取T1表,并且从第二数据源中获取T2表的Sharding方式(即分布信息)。接着根据T2表的Sharding方式,生成T1表在查询***中的Shuffle策略,然后依据该Shuffle策略将T1表的数据按C1列的值重新分布到查询***的N个节点上,使得C1列数据的分布与C2列在第二数据源中的分布保持一致。例如:C2=10的数据分布在第二数据源的Server1上,则C1=10的数据也应该分布在跨源查询引擎的Node1节点上。
接着,查询***上各节点Node i可以根据本地的C1列取值范围,生成一个C2列的过滤条件,然后用此过滤条件从第二数据源提取T2表的数据。具体的,配置有T1表数据的节点Node i可以并行发起M个查询请求到第二数据源,从而第二数据源中收到查询请求的机器Server可以返回与该过滤条件对应的表数据,每个节点Node_i仅获取了T2表的一部分数据,所有节点获取的数据组合起来则为T2完整的数据,从而一方面避免了在数据处理过程中,对大表的数据进行Shuffle操作,进一步降低了数据处理的时长,提高了数据处理效率,另一方面避免了对第二数据进行全量提取,提高了提取效率。
然后查询***上的每个节点Node_i根据本地的部分T1表数据和部分T2表数据进行本地Join运算,如Hash Join、Sort Merge Join等算法。并且,所有节点并行地执行本地Join。由于T1表的Shuffle策略和T2表的Sharding策略一致,两表Join Key相同的数据只会分布在同一个节点上,因此只需要本地Join即可,无需对大表T2进行Shuffle。当各个节点Join运算完毕后,可以将所有节点的本地Join结果组合起来,生成完整的Join结果,从而在I数据处理过程中,大大地缓解了数据倾斜的情况,并且通过过滤条件对第二数据进行提取,避免了进行数据的全量提取,提高了***运行的效率。
在本申请实施例中,通过获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息,根据第二数据的分布信息,将第一数据配置于各个第一节点中,确定第一数据在第一节点中的数据范围,根据数据范围,并行从多个第二节点中提取第二数据,从而实现了根据第二数据的分布信息,将第一数据配置于各个第一节点中,使得第一数据在第一节点上的分布与第二数据在第二节点上的分布保持一致,避免了在***中对第二数据进行分布配置,并且根据数据范围对第二数据进行提取,避免了进行数据的全量提取,提高了***运行的效率。
参照图4,示出了本申请的一种分布式查询***的数据查询方法实施例三的步骤流程图,所述分布式查询***与至少一个第二数据源进行通信连接;所述分布式查询***中包括多个第一节点,所述第一节点中包括采用所述第二数据源的分布信息进行配置的第一数据;所述第二数据源包括多个第二节点;具体可以包括如下步骤:
步骤401,确定所述第一数据在所述第一节点中的数据范围;
在本申请实施例中,分布式查询***包括多个第一节点,在第一节点中包括采用了第二数据源的分布信息进行配置的第一数据。当第一节点中未配置第一数据时,可以获取第二数据源中第二数据的分布信息,接着第二数据源中第二数据的分布信息,将第一数据配置于多个所述第一节点中。其中,第一数据可以为小表数据,或中间查询结构,第二数据可以为大表数据,以下为了方便描述与理解,以小表和大表为例进行示例性说明。
在本申请实施例的一种示例中,当第一节点中已经存储了采用第二数据源的分布信息进行配置的小表时,则各个第一节点可以确定本地的小表的数据范围,并生成针对大表的过滤条件。
在本申请实施例的另一种示例中,当第一节点中已经存储了小表,以及第二数据源的分布信息时,则可以采用分布信息生成针对小表的Shuffle策略,然后根据该Shuffle策略将小表配置于多个第一节点中。
在本申请实施例的另一种示例中,当第一节点中未存储小表时,则查询***可以先获取第二数据源中大表的分布信息,然后分别对各个所述分布信息进行计算,生成针对所述小表的第一配置标识,接着分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识,然后按照第二配置标识的序列,将所述小表分别配置于与所述第二配置标识对应的第一节点中;其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
在具体实现中,查询***可以获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
具体的,查询***可以将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
当将第一数据配置于多个第一节点后,各个第一节点可以确定本地的第一数据的数据范围,并生成针对大表的过滤条件。
步骤402,多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点;
在具体实现中,采用大表的分布信息将第一数据配置于第一节点之后,可以确定小表与大表之间的Join连接条件,然后多个第一节点按照Join连接条件,并行将包含数据范围的数据查询请求发送至多个第二节点,以获取第二节点中存储的大表。
具体的,数据范围包括各个第一子表数据对应的取值范围,第二数据为大表数据,大表数据包括与各个第二节点对应的第二子表数据,则多个第一节点可以采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据,从而避免查询***对所有第二节点进行扫描,或全量数据的扫描,大大提供了数据获取的效率。
步骤403,将所述多个第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果。
在本申请实施例中,查询***中获取了第一数据与第二数据的第一节点,可以对第一数据与第二数据进行Join本地运算,从而生成针对第一数据与第二数据的连接结果。
在具体实现中,查询***可以分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果,然后将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
在本申请实施例中,查询***通过确定所述第一数据在所述第一节点中的数据范围,接着多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点;将所述多个第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果,避免了在数据处理过程中,***对第二数据进行分布配置,大大地缓解了网络开销,并且根据数据范围对第二数据进行提取,避免了进行数据的全量提取,提高了***运行的效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图5,示出了本申请的一种分布式查询***的数据处理装置实施例一的结构框图,所述分布式查询***包括多个第一节点,并与至少两个数据源进行通信连接,具体可以包括如下模块:
数据与信息获取模块501,用于获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息;
数据配置模块502,用于根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中;
数据范围确定模块503,用于确定所述第一数据在所述第一节点中的数据范围;
数据提取模块504,用于根据所述数据范围,并行所述第二数据源的多个第二节点中提取所述第二数据。
在本申请实施例的一种可选实施例中,所述数据提取模块504包括:
连接条件确定子模块,用于确定所述第一数据与所述第二数据之间的Join连接条件;
数据提取子模块,用于按照所述Join连接条件,并行从所述多个第二节点中,提取与所述数据范围对应的第二数据。
在本申请实施例的一种可选实施例中,所述数据配置模块502包括:
第一标识生成子模块,用于分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
第二标识生成子模块,用于分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
数据配置子模块,用于按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中;
其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
在本申请实施例的一种可选实施例中,所述第一数据为小表数据,所述数据配置子模块具体用于:
将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;
从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;
按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
在本申请实施例的一种可选实施例中,所述数据范围包括各个所述第一子表数据对应的取值范围,所述第二数据为大表数据,所述大表数据包括与各个所述第二节点对应的第二子表数据,所述数据提取子模块具体用于:
采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据。
在本申请实施例的一种可选实施例中,所述第一标识生成子模块具体用于:
获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;
当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;
当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
在本申请实施例的一种可选实施例中,还包括:
子表数据运算模块,用于分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果;
连接结果组合模块,用于将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
参照图6,示出了本申请的一种分布式查询***的数据查询装置实施例二的结构框图,所述分布式查询***与至少一个第二数据源进行通信连接;所述分布式查询***中包括多个第一节点,所述第一节点中包括采用所述第二数据源的分布信息进行配置的第一数据;所述第二数据源包括多个第二节点;具体可以包括如下模块:
数据范围确定模块601,用于确定所述第一数据在所述第一节点中的数据范围;
查询请求发送模块602,用于多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点;
查询结果生成模块603,用于将所述多个第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果。
在本申请实施例的一种可选实施例中,所述查询请求发送模块602包括:
连接条件确定子模块,用于确定所述第一数据与所述第二数据之间的Join连接条件;
查询请求发送子模块,用于多个所述第一节点按照所述Join连接条件,并行将包含所述数据范围的数据查询请求发送至所述多个第二节点。
在本申请实施例的一种可选实施例中,还包括:
分布信息获取模块,用于获取所述第二数据源中第二数据的分布信息;
数据配置模块,用于根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中。
在本申请实施例的一种可选实施例中,所述数据配置模块包括:
第一标识生成子模块,用于分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
第二标识生成子模块,用于分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
数据配置子模块,用于按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中;
其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
在本申请实施例的一种可选实施例中,所述第一数据为小表数据,所述数据配置子模块具体用于:
将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;
从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;
按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
在本申请实施例的一种可选实施例中,所述数据范围包括各个所述第一子表数据对应的取值范围,所述第二数据为大表数据,所述大表数据包括与各个所述第二节点对应的第二子表数据,所述查询请求发送子模块具体用于:
采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据。
在本申请实施例的一种可选实施例中,所述第一标识生成子模块具体用于:
获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;
当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;
当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
在本申请实施例的一种可选实施例中,所述查询结果生成模块603包括:
节点连接子模块,用于分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果;
***连接子模块,用于将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本申请实施例所述的方法。
本申请实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本申请实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的机器可读介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种分布式查询***的数据处理方法和一种分布式查询***的数据处理装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (19)
1.一种分布式查询***的数据处理方法,其特征在于,所述分布式查询***包括多个第一节点,并与至少两个数据源通信连接,所述方法包括:
获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息;
根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中;
确定所述第一数据在所述第一节点中的数据范围;
根据所述数据范围,并行从所述第二数据源的多个第二节点中提取所述第二数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据范围,并行所述第二数据源的多个第二节点中提取所述第二数据,包括:
确定所述第一数据与所述第二数据之间的Join连接条件;
按照所述Join连接条件,并行从所述多个第二节点中,提取与所述数据范围对应的第二数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中,包括:
分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中;
其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
4.根据权利要求3所述的方法,其特征在于,所述第一数据为小表数据,所述按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中,包括:
将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;
从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;
按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
5.根据权利要求4所述的方法,其特征在于,所述数据范围包括各个所述第一子表数据对应的取值范围,所述第二数据为大表数据,所述大表数据包括与各个所述第二节点对应的第二子表数据,所述按照所述Join连接条件,并行从所述多个第二节点中,获取与所述数据范围对应的第二数据,包括:
采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据。
6.根据权利要求3所述的方法,其特征在于,所述分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识,包括:
获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;
当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;
当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
7.根据权利要求5所述的方法,其特征在于,还包括:
分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果;
将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
8.一种分布式查询***的数据查询方法,其特征在于,所述分布式查询***与至少一个第二数据源进行通信连接;所述分布式查询***中包括多个第一节点,所述第一节点中包括采用所述第二数据源的分布信息进行配置的第一数据;所述第二数据源包括多个第二节点;所述方法包括:
确定所述第一数据在所述第一节点中的数据范围;
多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点;
将所述多个第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果。
9.根据权利要求8所述的方法,其特征在于,所述多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点,包括:
确定所述第一数据与所述第二数据之间的Join连接条件;
多个所述第一节点按照所述Join连接条件,并行将包含所述数据范围的数据查询请求发送至所述多个第二节点。
10.根据权利要求9所述的方法,其特征在于,还包括:
获取所述第二数据源中第二数据的分布信息;
根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中。
11.根据权利要求10所述的方法,其特征在于,所述根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中,包括:
分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识;
分别采用所述第一配置标识与所述Join连接条件,确定针对所述第一节点的第二配置标识;
按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中;
其中,所述分布信息至少包括分片策略、分区策略以及分桶策略中的一种。
12.根据权利要求11所述的方法,其特征在于,所述第一数据为小表数据,所述按照第二配置标识的序列,将所述第一数据分别配置于与所述第二配置标识对应的第一节点中,包括:
将所述小表数据拆分成与各个所述第二配置标识对应的第一子表数据;
从所述第一节点中,分别确定与各个所述第二配置标识对应的目标节点;
按照所述第二配置标识的序列,将各个所述第一子表数据配置于所述目标节点中。
13.根据权利要求12所述的方法,其特征在于,所述数据范围包括各个所述第一子表数据对应的取值范围,所述第二数据为大表数据,所述大表数据包括与各个所述第二节点对应的第二子表数据,所述多个所述第一节点按照所述Join连接条件,并行将包含所述数据范围的数据查询请求发送至所述多个第二节点,包括:
采用所述Join连接条件,并行从所述多个第二节点中,获取与所述取值范围对应的第二子表数据。
14.根据权利要求11所述的方法,其特征在于,所述分别对各个所述分布信息进行计算,生成针对所述第一数据的第一配置标识,包括:
获取所述第一节点的第一数量信息,以及所述第二节点的第二数量信息;
当所述第二数量信息小于或等于所述第一数量信息时,则采用所述第一数量信息与所述分布信息,计算针对所述第一数据的第三配置标识;
当所述第二数量信息大于所述第一数量信息时,则采用所述第二数量信息与所述分布信息,计算针对所述第一数据的第四配置标识。
15.根据权利要求13所述的方法,其特征在于,所述将所述第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果,包括:
分别对各个所述第一节点中的第一子表数据以及第二子表数据进行连接,生成节点连接结果;
将各个所述第一节点对应的节点连接结果进行组合,生成针对所述小表数据以及所述大表数据的查询结果。
16.一种分布式查询***的数据处理装置,其特征在于,所述分布式查询***包括多个第一节点,并与至少两个数据源通信连接,所述装置包括:
数据与信息获取模块,用于获取第一数据源的第一数据,以及获取第二数据源中第二数据的分布信息;
数据配置模块,用于根据所述第二数据的分布信息,将所述第一数据配置于多个所述第一节点中;
数据范围确定模块,用于确定所述第一数据在所述第一节点中的数据范围;
数据提取模块,用于根据所述数据范围,并行所述第二数据源的多个第二节点中提取所述第二数据。
17.一种分布式查询***的数据查询装置,其特征在于,所述分布式查询***与至少一个第二数据源进行通信连接;所述分布式查询***中包括多个第一节点,所述第一节点中包括采用所述第二数据源的分布信息进行配置的第一数据;所述第二数据源包括多个第二节点;所述装置包括:
数据范围确定模块,用于确定所述第一数据在所述第一节点中的数据范围;
查询请求发送模块,用于多个所述第一节点将包含所述数据范围的数据查询请求,并行发送至所述多个第二节点;
查询结果生成模块,用于将所述多个第二节点发送的与所述数据查询请求对应的第二数据,与所述第一数据进行连接,生成针对所述第一数据与所述第二数据的查询结果。
18.一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-7或8-15所述的一个或多个的方法。
19.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-7或8-15所述的一个或多个的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911351500.9A CN113032446B (zh) | 2019-12-24 | 一种分布式查询***的数据处理方法和装置 | |
PCT/CN2020/137073 WO2021129498A1 (zh) | 2019-12-24 | 2020-12-17 | 一种分布式查询***的数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911351500.9A CN113032446B (zh) | 2019-12-24 | 一种分布式查询***的数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113032446A true CN113032446A (zh) | 2021-06-25 |
CN113032446B CN113032446B (zh) | 2024-07-09 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102479217A (zh) * | 2010-11-23 | 2012-05-30 | 腾讯科技(深圳)有限公司 | 一种分布式数据仓库中实现计算均衡的方法及装置 |
CN103714073A (zh) * | 2012-09-29 | 2014-04-09 | 国际商业机器公司 | 数据查询的方法和装置 |
CN104731951A (zh) * | 2015-03-31 | 2015-06-24 | 北京奇艺世纪科技有限公司 | 一种数据查询方法及装置 |
CN106611064A (zh) * | 2017-01-03 | 2017-05-03 | 北京华胜信泰数据技术有限公司 | 分布式关系数据库的数据处理方法和装置 |
US20190138638A1 (en) * | 2016-09-26 | 2019-05-09 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102479217A (zh) * | 2010-11-23 | 2012-05-30 | 腾讯科技(深圳)有限公司 | 一种分布式数据仓库中实现计算均衡的方法及装置 |
CN103714073A (zh) * | 2012-09-29 | 2014-04-09 | 国际商业机器公司 | 数据查询的方法和装置 |
CN104731951A (zh) * | 2015-03-31 | 2015-06-24 | 北京奇艺世纪科技有限公司 | 一种数据查询方法及装置 |
US20190138638A1 (en) * | 2016-09-26 | 2019-05-09 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
CN106611064A (zh) * | 2017-01-03 | 2017-05-03 | 北京华胜信泰数据技术有限公司 | 分布式关系数据库的数据处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
王知无-IMPORT_BIGDATA: "SparkSQL的3种Join实现", pages 1 - 6, Retrieved from the Internet <URL:https://cloud.tencent.com/developer/article/1460186> * |
Also Published As
Publication number | Publication date |
---|---|
WO2021129498A1 (zh) | 2021-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391142B (zh) | 一种应用拆分的方法及装置 | |
KR20190099087A (ko) | 서비스 데이터를 블록체인에 기입하기 위한 방법 및 장치, 그리고 서비스 하위세트를 결정하기 위한 방법 | |
CN110147407B (zh) | 一种数据处理方法、装置及数据库管理服务器 | |
CN110413595B (zh) | 一种应用于分布式数据库的数据迁移方法和相关装置 | |
CN105468720A (zh) | 集成分布式数据处理***的方法、相应***及其数据处理方法 | |
EP3373158B1 (en) | Data storage method and coordinator node | |
US11907294B2 (en) | Efficient and scalable time-series data storage and retrieval over a network | |
WO2016191995A1 (zh) | 一种分布式数据库中关联表分区的方法和设备 | |
Aljawarneh et al. | Efficient spark-based framework for big geospatial data query processing and analysis | |
CN103257901A (zh) | 计算任务的分配方法、云计算平台、终端及*** | |
CN111026709B (zh) | 基于集群访问的数据处理方法及装置 | |
CN111737228A (zh) | 数据库的分库分表方法及装置 | |
CN111400301A (zh) | 一种数据查询方法、装置及设备 | |
CN107016050B (zh) | 数据处理方法及装置 | |
CN105183582A (zh) | 数据备份方法及装置 | |
CN113032446B (zh) | 一种分布式查询***的数据处理方法和装置 | |
CN113032446A (zh) | 一种分布式查询***的数据处理方法和装置 | |
CN111814020A (zh) | 一种数据的获取方法和装置 | |
CN111427950A (zh) | 数据发送、接收方法及相应的装置、设备、存储介质 | |
KR20160100224A (ko) | 오디오 핑거프린트 데이터베이스 구축 및 오디오 핑거프린트 검색 방법 및 장치 | |
CN111782634B (zh) | 数据分布式存储方法、装置、电子设备及存储介质 | |
CN114880385B (zh) | 一种通过自动组合流程接入地质灾害数据的方法及装置 | |
CN110427390B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN110019296B (zh) | 数据库查询脚本的生成方法、装置、存储介质及处理器 | |
CN112749189A (zh) | 数据查询方法及装置 |
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 |