CN108536808B - 一种基于Spark计算框架的数据获取方法和装置 - Google Patents
一种基于Spark计算框架的数据获取方法和装置 Download PDFInfo
- Publication number
- CN108536808B CN108536808B CN201810296682.3A CN201810296682A CN108536808B CN 108536808 B CN108536808 B CN 108536808B CN 201810296682 A CN201810296682 A CN 201810296682A CN 108536808 B CN108536808 B CN 108536808B
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- information
- data table
- spark
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000004364 calculation method Methods 0.000 title abstract description 17
- 238000005192 partition Methods 0.000 claims abstract description 226
- 239000012634 fragment Substances 0.000 claims description 17
- 230000006835 compression Effects 0.000 claims description 11
- 238000007906 compression Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 7
- 238000013467 fragmentation Methods 0.000 claims description 3
- 238000006062 fragmentation reaction Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 abstract description 7
- 230000005540 biological transmission Effects 0.000 abstract description 4
- 238000010205 computational analysis Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Spark计算框架的数据获取方法和装置。该方法包括:在接收到表对象访问请求之后,获取Spark的计算资源信息以及MPP集群中待访问的数据表的数据分布信息;根据计算资源信息和数据分布信息,生成多个Partition;其中,每个Partition对应数据表中的部分数据;通过生成的多个Partition,从MPP集群中获取数据表。本发明充分利用MPP集群的数据存储特性,通过多个Partition,直接从MPP的存储节点快速获取数据集。进一步地,在计算资源充足的情况下,可以对存储节点的数据表进行进一步的拆分,以达到提高并行度,提升数据导入性能的目的。可以根据MPP集群的数据分布情况,优先从本地存储中获取数据,减少数据传输开销、节约网络带宽、减少网络延迟、提高计算性能。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于Spark计算框架的数据获取方法和装置。
背景技术
Apache Spark(简称Spark)是专为大规模数据处理而设计的快速通用的计算引擎。Spark原生提供了对文件系统包括HDFS(Hadoop Distributed File System,分布式文件系统)的访问接口,通常可以使用Spark对数据库中的结构化数据进行计算分析。
具体的,Spark可以通过数据库导出工具将目标数据库的数据导出到文件,再通过该文件对数据进行计算分析,但是这种方法操作繁琐、耗时、容易出错,并且在很大程度上受到环境的限制。
此外,也可以通过Spark提供的JdbcRDD直接访问数据库系统。JdbcRDD是Spark原生提供的通用的数据库访问接口,使用简单便捷,是目前比较常用的Spark访问数据库系统的解决方案。但是,JdbcRDD作为MPP(Massively Parallel Processing,大规模并行处理系统)数据库与Spark数据驱动时,接口不够灵活,lowerBound、upperBound两个参数只能够对结果集的某列整数结果进行筛选;JdbcRDD仅支持简单的where条件的下放,包含复杂条件的sql语句不能友好支持;JdbcRDD将底层的多服务器并行IO(Input/Output,输入/输出接口)进行了单出口汇总,不能完全发挥多数据源分布式存储的性能优势。
因此,JdbcRDD作为通用的数据库访问接口,无法根据MPP数据分布特点和计算特性进行复杂条件的数据筛选、负载均衡。由于JdbcRDD在功能上和性能上的不足,影响了spark的数据导入性能。
发明内容
本发明要解决的技术问题是一种基于Spark计算框架的数据获取方法和装置,用以解决现有技术中,由于JdbcRDD功能和的性能不足,影响了spark的数据导入性能的问题。
为了解决上述技术问题,本发明是通过以下技术方案来解决的:
本发明提供了一种基于Spark计算框架的数据获取方法,在Spark侧执行,包括:在接收到表对象访问请求之后,获取Spark的计算资源信息以及大规模并行处理系统MPP集群中待访问的数据表的数据分布信息;根据所述计算资源信息和所述数据分布信息,生成多个Partition;其中,每个所述Partition对应所述数据表中的部分数据;通过生成的所述多个Partition,从所述MPP集群中获取所述数据表。
其中,根据所述计算资源信息和所述数据分布信息,生成多个Partition,包括:根据所述计算资源信息,确定待生成的Partition数量PartitionNu;根据所述PartitionNu以及所述数据分布信息,确定数据表的最小拆分单元;基于所述最小拆分单元,将所述数据表拆分成PartitionNu份数据;根据每份数据的信息生成各自对应的Partition。
其中,根据每份数据的信息生成各自对应的Partition,包括:根据所述数据分布信息,确定所述Partition对应的数据是否存在副本;如果所述数据存在副本,则生成包含所述数据的副本信息的Partition。
其中,通过生成的所述多个Partition,从所述MPP集群中获取所述数据表,包括:针对每个Partition,如果所述Partition包含数据的副本信息,则通过所述Partition,从所述MPP集群中获取所述数据的副本。
其中,通过生成的所述多个Partition,从所述MPP集群中获取所述数据表,包括:所述数据表中的数据被存储在所述MPP集群中的一个或多个存储节点上;针对每个Partition,确定所述Partition对应的数据所在的存储节点与Spark的计算节点之间的距离,控制距离所述存储节点最近的计算节点,通过所述Partition从所述存储节点获取所述Partition对应的数据。
本发明还提供了一种基于Spark计算框架的数据获取装置,位于Spark侧,包括:第一获取模块,用于在接收到表对象访问请求之后,获取Spark的计算资源信息以及大规模并行处理系统MPP集群中待访问的数据表的数据分布信息;生成模块,用于根据所述计算资源信息和所述数据分布信息,生成多个Partition;其中,每个所述Partition对应所述数据表中的部分数据;第二获取模块,用于通过生成的所述多个Partition,从所述MPP集群中获取所述数据表。
其中,所述生成模块,用于:根据所述计算资源信息,确定待生成的Partition数量PartitionNu;根据所述PartitionNu以及所述数据分布信息,确定数据表的最小拆分单元;基于所述最小拆分单元,将所述数据表拆分成PartitionNu份数据;根据每份数据的信息生成各自对应的Partition。
其中,所述生成模块,用于:根据所述数据分布信息,确定所述Partition对应的数据是否存在副本;如果所述数据存在副本,则生成包含所述数据的副本信息的Partition。
其中,所述第二获取模块,用于:针对每个Partition,如果所述Partition包含数据的副本信息,则通过所述Partition,从所述MPP集群中获取所述数据的副本。
其中,所述第二获取模块,用于:所述数据表中的数据被存储在所述MPP集群中的一个或多个存储节点上;针对每个Partition,确定所述Partition对应的数据所在的存储节点与Spark的计算节点之间的距离,控制距离所述存储节点最近的计算节点,通过所述Partition从所述存储节点获取所述Partition对应的数据。
本发明有益效果如下:
本发明充分利用MPP集群的数据存储特性,通过多个Partition,直接从MPP的存储节点快速获取数据集。进一步地,在计算资源充足的情况下,可以对存储节点的数据表进行进一步的拆分,以达到提高并行度,提升数据导入性能的目的。同时,可以根据MPP集群的数据分布情况,优先从本地存储中获取数据,减少数据传输开销、节约网络带宽、减少网络延迟、提高计算性能。
附图说明
图1是根据本发明实施例的基于Spark计算框架的数据获取方法的流程图;
图2是根据本发明实施例的生成Partition的步骤流程图;
图3是根据本发明实施例的基于Spark计算框架的数据获取装置的结构图。
具体实施方式
以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本实施例提供一种基于Spark计算框架的数据获取方法。本实施例在Spark侧执行。如图1所示,为根据本发明实施例的基于Spark计算框架的数据获取方法的流程图。
步骤S110,在接收到表对象访问请求之后,获取Spark的计算资源信息以及MPP集群(又称MPP数据库集群)中待访问的数据表的数据分布信息。
表对象访问请求用于请求访问MPP集群中存储的数据表。根据该表对象访问请求需要从MPP集群中获取请求访问的数据表。
计算资源信息为Spark的计算节点使用信息。在Spark中包括多个用于从MPP集群获取数据的计算节点。计算资源信息,包括但不限于:Spark中的可用计算节点信息、每个可用计算节点的可运行任务数量。
数据分布信息为MPP集群的数据存储信息。在MPP集群中包括多个用于存储数据的存储节点。一张数据表被存储在一个或多个存储节点,例如:神通KSTORE海量数据库。数据分布信息,包括但不限于:表的类型、表的存储节点分布信息、表的副本信息、表的分片信息。进一步地,Spark通过JDBC连接MPP集群,从MPP集群的数据字典中获取MPP集群中的数据表的数据分布信息。
步骤S120,根据所述计算资源信息和所述数据分布信息,生成多个Partition(分区);其中,每个所述Partition对应所述数据表中的部分数据。
根据所述计算资源信息,确定待生成的Partition数量PartitionNu;根据所述PartitionNu以及所述数据分布信息,确定数据表的最小拆分单元;基于所述最小拆分单元,将所述数据表拆分成PartitionNu份数据;根据每份数据的信息生成各自对应的Partition。一个Partition对应一份数据。
最小拆分单元可以是一级分区、二级分区或者数据包(package)压缩块。其中,二级分区是比一级分区更小的独立可访问单元,package压缩块是比二级分区更小的独立可访问单元。
基于最小拆分单元,本实施例可以由数据表的分片生成Partition;由数据表的一级分区生成Partition;由数据表二级分区生成Partition;对数据表进行package压缩块拆分,生成构成Partition。
在本实施例中,可以根据所述数据分布信息,确定所述Partition对应的数据是否存在副本;如果所述数据存在副本,则最终生成包含所述数据的副本信息的Partition。副本信息包括但不限于:副本所在的存储节点的IP(Internet Protocol,互联网协议)地址、表名称、schema名称、表状态信息、分区信息、package信息。进一步地,如果数据包括多个副本,则Partition中可以包含多个有效的副本信息。
通过这样的方式,当MPP集群里的表分布比较集中,且这个表在其它存储节点上存在副本时,就可以将Partition规划到副本所在的存储节点上,Spark在执行多个Partition时,会并行从这些存储节点取出数据,实现各个存储节点间的数据访问负载均衡。
步骤S130,通过生成的所述多个Partition,从所述MPP集群中获取所述数据表。
所述多个Partition构成Spark的RDD数据分区。
每个Partition通过JDBC连接到MPP集群中的存储节点,从该存储节点获取该Partition对应的数据。通过参数控制的方式,可以选择Partition和存储节点之间的数据传送格式和数据查询并发数。数据传送格式包括:常规格式和datum格式。
多个Partition分别获取的数据可以汇总成表对象访问请求所需的数据表。
进一步地,针对每个Partition,如果所述Partition包含数据的副本信息,则通过所述Partition,从所述MPP集群中获取所述数据的副本。如果Partition出错,不能获取副本,则将该副本标记为无效,如果Partition中包含多个副本信息,则再下次重试数据获取操作时,根据有效的副本信息获取副本。
进一步地,所述数据表中的数据被存储在所述MPP集群中的一个或多个存储节点上;针对每个Partition,确定所述Partition对应的数据所在的存储节点与Spark的计算节点之间的距离,控制距离所述存储节点最近的计算节点,通过所述Partition从所述存储节点获取所述Partition对应的数据。进一步地,针对每个Partition,如果所述Partition对应的数据所在的存储节点与Spark的计算节点位置重合,则控制所述计算节点通过所述Partition从所述存储节点获取所述Partition对应的数据。这样根据MPP集群的数据分布情况,根据就近节点,就近机架和就近机房的原则,进行最佳拓扑计算,进一步地,让Spark优先从本地存储中获取数据,通过这种方式,可以减少数据传输开销、节约网络带宽、减少网络延迟、提高计算性能。
在本实施例中,需要继承实现org.apache.spark.rdd.RDD内的getPreferLocation方法和compute方法。
在调用getPreferredLocations方法时,会返回当前Partition对应的数据所在的位置信息(即:数据所在的主机名/IP地址),Spark可根据此位置信息,通过数据分布就近计算感知算法,实现数据就近访问,满足负载均衡访问要求。
每个Partition最终都会通过调用compute()方法返回的Iterator,实现对存储节点中的数据的直接读取操作,在执行compute()时会将Partition做为参数传入到此方法中。具体的:
步骤1,compute()方法根据传入的Partition,创建与Partition对应的存储节点之间的连接Connection。
步骤2,通过Connection(),初始化与存储节点之间的交互参数,构造查询SQL语句。在初始化交互参数时,可以设置数据传输参数dataum、fetchsize等,以提高数据读取性能。
步骤3,Connection()根据Partition和查询SQL语句,创建生成Statement,并通过executeQuery方法获取resultSet结果集合。
步骤4,初始化继承自scala.collection.Iterator的Iterater,该Iterator的getNext()方法不断调用resultSet.next()方法,并通过resultSet.getObject(columnPosition)方法循环拼凑出整行数据,最终获得Partition对应的数据。
下面针对步骤S120生成多个Partition的步骤进行进一步地描述。在本实施例中,生成Partition的步骤可以由getPartition()执行。本领域技术人员应当知道的是,本实施例仅用于说明本发明而不用限定本发明。
如图2所示,为根据本发明实施例的生成Partition的步骤流程图。
步骤S210,根据计算资源信息,确定所需的Partition数量PartitionNu。
在本实施例中,可以根据spark的可用计算节点数量和每个计算节点的可运行任务数量,计算出所有可用计算节点可运行的任务总数taskNu,将该任务总数taskNu作为Partition数量PartitionNu。这样,后续就可以做到每个可运行的任务处理一个Partition。
在另一实施例中,可以预估所需的Partition数量,由用户自定义Partition数量。如果用户自定义了Partition数量,则根据用户输入的Partition数量作为Partition数量PartitionNu。
步骤S220,根据数据分布信息,确定数据表的总分片数allSliceNu。
数据表可能被存储在一个或多个存储节点上。
根据数据表所在的存储节点的数量nodes,以及每个存储节点包含该数据表的分片数slice,计算出数据表的总分片数nodes*slice=allSliceNu。
步骤S230,根据Partition数量PartitionNu和数据表的总分片数allSliceNu,确定数据表的最小分拆单元。
步骤1,计算每个分片所需Partition数量slicePartitionNu:
使PartitionNu/allSliceNu得出每个分片需要拆分成的Partition数量slicePartitionNu。
步骤2,如果slicePartitionNu≤1,则确定以分片为最小拆分单元,如果slicePartitionNu>1,则确定以分区或者package压缩块为最小拆分单元。
该分区为一级分区或者二级分区。具体的:
如果slicePartitionNu>1,并且分片中的一级分区数量大于slicePartitionNu,则将一级分区确定为最小拆分单元;或者,
如果slicePartitionNu>1,并且分片中的二级分区数量大于slicePartitionNu,则将二级分区确定为最小拆分单元。
如果slicePartitionNu>1,并且分片中一级分区数量和二级分区数量都小于等于slicePartitionNu,则确定package压缩块为最小拆分单元。
步骤S240,基于最小拆分单元,拆分数据表,并根据拆分结果生成Partition。
Partition,包括但不限于以下信息(即:该Partition对应的数据的信息):存储节点的IP地址、表名称、schema名称、表状态信息、分区信息、package信息。
如果slicePartitionNu≤1,则使一个或多个分片对应一个Partition,Partition中记录对应的分片的信息。分片的信息可以由分片中的分区信息、package信息来表示。
如果slicePartitionNu>1,则使分片中的一个或多个一级分区或者二级分区或者一定范围的package压缩块对应一个Partition,Partition中记录一级分区信息或者二级分区信息。在划分时,可以将数据表的一级分区或者二级分区或者package压缩块平均分配给各个Partition。
在本实施例中,每个package压缩块都有唯一的packdatano标识,当以package压缩块作为最小拆分单元时,对每个分片进行拆包处理,以便为每一个Partition划分一定范围的package压缩块,通过起始的packdatano和结束的packdatano来描述一个Partition。至于每个Partition对应的package压缩块的数量,可以用每个分片内的package数量maxpackdatano/slicePartitionNu计算每个Partition的可以平均分到的package数量avgPackageNu。
进一步地,在构造Package级的Partition时,从表的第一个分区(一级分区)开始划分Partition,每个Partition按照avgPackageNu进行顺序切割,并记录package压缩块起、止编号(packdatano)。如遇到切分跨越分区,则可以在分区结束位置结束当前Partition,并生成一个新的Partition,记录下一个分区的第一个package压缩块的编号作为新Partition对应的起始编号。
通过这样处理,Spark能够在计算资源的分配和计算消时之间找到一个相对合理的平衡点,提高系统的吞吐量。
在本实施例中,MPP集群中的副本以分片为物理一致性复制单元,按照本实施例的最小拆分单元的确定方式,每个Partition均仅包括在一个独立分片范围内,因此根据表的副本信息,确定分片的副本信息,进而在根据最小拆分单元拆分数据表时,将分片的副本信息、或者一级分区的副本信息、或者二级分区的副本信息、或者package压缩块范围的副本信息记录在Partition中,形成最终的Partition。
本发明为MPP集群引入了系统层面的数据output,利用MPP集群的数据分布特点,直接从MPP集群的存储节点上快速获取数据。
本发明在计算资源充足的情况下,可以对MPP集群存储节点上的数据表进行Partition拆分操作(依据一级分区、二级分区、package压缩块),达到增加并发量,提升数据的导入性能的目的。本发明在计算资源不足的情况下,可以选择通过数据表分片的方式构造Partition。
本发明还提供了一种基于Spark计算框架的数据获取装置。该基于Spark计算框架的数据获取装置位于Spark侧。图3是根据本发明实施例的基于Spark计算框架的数据获取装置的结构图。
该基于Spark计算框架的数据获取装置,包括:
第一获取模块310,用于在接收到表对象访问请求之后,获取Spark的计算资源信息以及大规模并行处理系统MPP集群中待访问的数据表的数据分布信息。
生成模块320,用于根据所述计算资源信息和所述数据分布信息,生成多个Partition;其中,每个所述Partition对应所述数据表中的部分数据。
第二获取模块330,用于通过生成的所述多个Partition,从所述MPP集群中获取所述数据表。
可选地,所述生成模块320,用于:根据所述计算资源信息,确定待生成的Partition数量PartitionNu;根据所述PartitionNu以及所述数据分布信息,确定数据表的最小拆分单元;基于所述最小拆分单元,将所述数据表拆分成PartitionNu份数据;根据每份数据的信息生成各自对应的Partition。
可选地,所述生成模块320,用于:根据所述数据分布信息,确定所述Partition对应的数据是否存在副本;如果所述数据存在副本,则生成包含所述数据的副本信息的Partition。
可选地,所述第二获取模块330,用于:针对每个Partition,如果所述Partition包含数据的副本信息,则通过所述Partition,从所述MPP集群中获取所述数据的副本。
可选地,所述第二获取模块330,用于:所述数据表中的数据被存储在所述MPP集群中的一个或多个存储节点上;针对每个Partition,确定所述Partition对应的数据所在的存储节点与Spark的计算节点之间的距离,控制距离所述存储节点最近的计算节点,通过所述Partition从所述存储节点获取所述Partition对应的数据。进一步地,所述第二获取模块330,可以针对每个Partition执行以下步骤:如果所述Partition对应的数据所在的存储节点与Spark的计算节点位置重合,则控制所述计算节点通过所述Partition从所述存储节点获取所述Partition对应的数据。
本实施例所述的装置的功能已经在图1和图2所示的方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (8)
1.一种基于计算引擎Spark计算框架的数据获取方法,其特征在于,在Spark侧执行,包括:
在接收到表对象访问请求之后,获取Spark的计算资源信息以及大规模并行处理系统MPP集群中待访问的数据表的数据分布信息;
根据所述计算资源信息和所述数据分布信息,生成多个Partition;其中,每个所述Partition对应所述数据表中的部分数据;
通过生成的所述多个Partition,从所述MPP集群中获取所述数据表;
根据所述计算资源信息和所述数据分布信息,生成多个Partition,包括:
根据所述计算资源信息,确定待生成的Partition数量PartitionNu;
根据所述PartitionNu以及所述数据分布信息,确定数据表的最小拆分单元;
基于所述最小拆分单元,将所述数据表拆分成PartitionNu份数据;
根据每份数据的信息生成各自对应的Partition;
所述根据所述PartitionNu以及所述数据分布信息,确定数据表的最小拆分单元,包括:
根据数据分布信息,确定数据表的总分片数allSliceNu;
计算每个分片所需Partition数量slicePartitionNu,如果slicePartitionNu≤1,以分片为最小分拆单元,如果slicePartitionNu>1,以分区或package压缩块为最小分拆单元。
2.如权利要求1所述的方法,其特征在于,根据每份数据的信息生成各自对应的Partition,包括:
根据所述数据分布信息,确定所述Partition对应的数据是否存在副本;
如果所述数据存在副本,则生成包含所述数据的副本信息的Partition。
3.如权利要求2所述的方法,其特征在于,通过生成的所述多个Partition,从所述MPP集群中获取所述数据表,包括:
针对每个Partition,如果所述Partition包含数据的副本信息,则通过所述Partition,从所述MPP集群中获取所述数据的副本。
4.如权利要求1-3中任一项所述的方法,其特征在于,通过生成的所述多个Partition,从所述MPP集群中获取所述数据表,包括:
所述数据表中的数据被存储在所述MPP集群中的一个或多个存储节点上;
针对每个Partition,确定所述Partition对应的数据所在的存储节点与Spark的计算节点之间的距离,控制距离所述存储节点最近的计算节点,通过所述Partition从所述存储节点获取所述Partition对应的数据。
5.一种基于计算引擎Spark计算框架的数据获取装置,其特征在于,位于Spark侧,包括:
第一获取模块,用于在接收到表对象访问请求之后,获取Spark的计算资源信息以及大规模并行处理系统MPP集群中待访问的数据表的数据分布信息;
生成模块,用于根据所述计算资源信息和所述数据分布信息,生成多个Partition;其中,每个所述Partition对应所述数据表中的部分数据;
第二获取模块,用于通过生成的所述多个Partition,从所述MPP集群中获取所述数据表;
所述生成模块,用于:
根据所述计算资源信息,确定待生成的Partition数量PartitionNu;
根据所述PartitionNu以及所述数据分布信息,确定数据表的最小拆分单元;
基于所述最小拆分单元,将所述数据表拆分成PartitionNu份数据;
根据每份数据的信息生成各自对应的Partition;
所述根据所述PartitionNu以及所述数据分布信息,确定数据表的最小拆分单元,包括:
根据数据分布信息,确定数据表的总分片数allSliceNu;
计算每个分片所需Partition数量slicePartitionNu,如果slicePartitionNu≤1,以分片为最小分拆单元,如果slicePartitionNu>1,以分区或package压缩块为最小分拆单元。
6.如权利要求5所述的装置,其特征在于,所述生成模块,用于:
根据所述数据分布信息,确定所述Partition对应的数据是否存在副本;
如果所述数据存在副本,则生成包含所述数据的副本信息的Partition。
7.如权利要求6所述的装置,其特征在于,所述第二获取模块,用于:
针对每个Partition,如果所述Partition包含数据的副本信息,则通过所述Partition,从所述MPP集群中获取所述数据的副本。
8.如权利要求5-7中任一项所述的装置,其特征在于,所述第二获取模块,用于:
所述数据表中的数据被存储在所述MPP集群中的一个或多个存储节点上;
针对每个Partition,确定所述Partition对应的数据所在的存储节点与Spark的计算节点之间的距离,控制距离所述存储节点最近的计算节点,通过所述Partition从所述存储节点获取所述Partition对应的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810296682.3A CN108536808B (zh) | 2018-04-04 | 2018-04-04 | 一种基于Spark计算框架的数据获取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810296682.3A CN108536808B (zh) | 2018-04-04 | 2018-04-04 | 一种基于Spark计算框架的数据获取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108536808A CN108536808A (zh) | 2018-09-14 |
CN108536808B true CN108536808B (zh) | 2022-04-29 |
Family
ID=63483104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810296682.3A Expired - Fee Related CN108536808B (zh) | 2018-04-04 | 2018-04-04 | 一种基于Spark计算框架的数据获取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108536808B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109617734B (zh) * | 2018-12-25 | 2021-12-07 | 北京市天元网络技术股份有限公司 | 网络运营能力分析方法及装置 |
CN111694834A (zh) * | 2019-03-15 | 2020-09-22 | 杭州海康威视数字技术股份有限公司 | 图数据的入库方法、装置、设备及可读存储介质 |
CN109933436B (zh) * | 2019-03-25 | 2021-10-22 | 联想(北京)有限公司 | 处理方法和处理装置 |
CN110750251B (zh) * | 2019-09-25 | 2023-03-24 | 成都品果科技有限公司 | 读写通信方法、读写器装置及存储介质 |
CN112632114B (zh) * | 2019-10-08 | 2024-03-19 | 中国移动通信集团辽宁有限公司 | Mpp数据库快速读取数据的方法、装置及计算设备 |
CN110955732B (zh) * | 2019-12-16 | 2020-12-01 | 湖南大学 | 一种用于在Spark环境中实现分区负载均衡的方法和系统 |
CN112685419B (zh) * | 2020-12-31 | 2021-09-10 | 北京赛思信安技术股份有限公司 | 一种可保持janusGraph数据一致性的分布式高效并行加载方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045871A (zh) * | 2015-07-15 | 2015-11-11 | 国家超级计算深圳中心(深圳云计算中心) | 数据聚合查询方法及装置 |
US9218388B1 (en) * | 2012-06-27 | 2015-12-22 | Emc Corporation | Declarative cluster management |
CN107329982A (zh) * | 2017-06-01 | 2017-11-07 | 华南理工大学 | 一种基于分布式列式存储的大数据并行计算方法及系统 |
-
2018
- 2018-04-04 CN CN201810296682.3A patent/CN108536808B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9218388B1 (en) * | 2012-06-27 | 2015-12-22 | Emc Corporation | Declarative cluster management |
CN105045871A (zh) * | 2015-07-15 | 2015-11-11 | 国家超级计算深圳中心(深圳云计算中心) | 数据聚合查询方法及装置 |
CN107329982A (zh) * | 2017-06-01 | 2017-11-07 | 华南理工大学 | 一种基于分布式列式存储的大数据并行计算方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108536808A (zh) | 2018-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536808B (zh) | 一种基于Spark计算框架的数据获取方法和装置 | |
US11372888B2 (en) | Adaptive distribution for hash operations | |
CN110168516B (zh) | 用于大规模并行处理的动态计算节点分组方法及系统 | |
US8402469B2 (en) | Allocating resources for parallel execution of query plans | |
US6477523B1 (en) | Selectivity prediction with compressed histograms in a parallel processing database system | |
US10223437B2 (en) | Adaptive data repartitioning and adaptive data replication | |
US11907213B2 (en) | Query processing method, data source registration method, and query engine | |
EP2962226A1 (en) | System and method for distributed sql join processing in shared-nothing relational database clusters using stationary tables | |
CN108509453B (zh) | 一种信息处理方法及装置 | |
EP3717997A1 (en) | Cardinality estimation in databases | |
CN112328700A (zh) | 一种分布式数据库 | |
CN116401277A (zh) | 数据处理方法、装置、系统、设备及介质 | |
JP6506773B2 (ja) | 情報処理装置、方法およびプログラム | |
CN114020446A (zh) | 一种跨多引擎的路由处理方法、装置、设备及存储介质 | |
CN112395306A (zh) | 数据库系统、数据处理方法、装置及计算机存储介质 | |
CN108780452A (zh) | 一种存储过程处理方法及装置 | |
Huo et al. | A MapReduce-based algorithm for motif search | |
CN116431716A (zh) | 数据处理方法、装置、网络设备及可存储介质 | |
CN118410070A (zh) | 一种多路径动态数据库查询方法及装置 | |
CN117520366A (zh) | 数据查询方法、装置、设备及计算机可读存储介质 | |
CN116991884A (zh) | 数据查询方法及装置 | |
CN115718773A (zh) | 一种分布式数据库查询切分方法及装置 | |
Ceran | A C++ distributed database select-project-join query processor on a HPC cluster |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220429 |