CN115934317A - 分布式数据处理方法、装置、电子设备及存储介质 - Google Patents
分布式数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115934317A CN115934317A CN202211452286.8A CN202211452286A CN115934317A CN 115934317 A CN115934317 A CN 115934317A CN 202211452286 A CN202211452286 A CN 202211452286A CN 115934317 A CN115934317 A CN 115934317A
- Authority
- CN
- China
- Prior art keywords
- iterator
- data
- input
- data processing
- buffer pool
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 136
- 238000005192 partition Methods 0.000 claims abstract description 22
- 238000000034 method Methods 0.000 claims description 42
- 230000006870 function Effects 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 14
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000004364 calculation method Methods 0.000 description 27
- 230000000875 corresponding effect Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供了一种分布式数据处理方法、装置、电子设备及存储介质,涉及计算机技术领域,在进行分布式数据处理时,创建了采用Spark作为分布式计算执行引擎的并行迭代器,并行迭代器包括线程数为计算并行度的计算线程组,当启动并行迭代器时,从输入迭代器中拉取数据至输入缓冲池,由计算线程组通过数据处理函数对输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由输出迭代器对输出缓冲池中的处理结果进行输出。如此基于采用Spark作为分布式计算执行引擎的并行迭代器,进行多线程的数据处理,具备较高的计算并行度,同时避免了数据重分区,从而减小了计算开销。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种分布式数据处理方法、装置、电子设备及存储介质。
背景技术
当前对于大数据量的批量数据计算,通常使用mapreduce、Spark等批量计算框架。其中,Spark是一种有效的分布式数据并行计算框架,当单个计算实例每个元素的计算消耗时间与IO(Input/Output,输入/输出)消耗时间差距不太大时,通常会通过增加任务中计算的计算实例数目,来提升计算速度。
在每个计算实例中,Spark使用迭代器模型来对数据进行逐个处理,每个计算实例均有一个输出,而每个输出通常都对应一个IO存储系统。由于传统机械硬盘以及IO接口本身的限制,每种存储系统的最优IO接口量有限,并且各种存储系统通常不会只有一个客户端在使用,因此Spark任务输出时的IO并行度应该控制在一个合理的范围。但是计算时,可使用的计算实例通常与CPU(central processing unit,中央处理器)核数正相关,通常整个Spark计算集群的CPU核数资源会远大于输出设备的IO接口限制,此时便会出现由于IO接口的限制,导致计算节点不能过多。
目前通常的做法是在计算时配置较高的计算节点数,在输出前对所有的结果数据进行重分区(repartition)操作,然后对重分区后的结果数据进行IO操作。然而这种做法存在计算开销大的问题。
发明内容
本发明的目的在于提供一种分布式数据处理方法、装置、电子设备及存储介质,以在具备较高的计算并行度的情况下,避免数据重分区,从而减小计算开销。
第一方面,本发明实施例提供了一种分布式数据处理方法,包括:
获取输入迭代器和数据处理参数;其中,所述输入迭代器为弹性分布式数据集RDD的每个分区对应的迭代器,所述输入迭代器中存储有所述RDD的相应分区中的待处理数据,所述数据处理参数包括数据处理函数和计算并行度;
创建采用Spark作为分布式计算执行引擎的并行迭代器,所述并行迭代器包括输出迭代器和线程数为所述计算并行度的计算线程组,所述输入迭代器为所述并行迭代器的输入,所述计算线程组用于通过所述数据处理函数消费所述输入迭代器中的数据;
当启动所述并行迭代器时,从所述输入迭代器中拉取数据至输入缓冲池,由所述计算线程组通过所述数据处理函数对所述输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由所述输出迭代器对所述输出缓冲池中的处理结果进行输出。
进一步地,所述数据处理参数还包括是否保证有序;所述从所述输入迭代器中拉取数据至输入缓冲池的步骤,包括:
当所述是否保证有序为是时,从所述输入迭代器中拉取数据,对拉取出的每条数据进行顺序标记,并将带有顺序标记的数据输出至输入缓冲池。
进一步地,所述由所述输出迭代器对所述输出缓冲池中的处理结果进行输出的步骤,包括:
当所述输出缓冲池中的处理结果带有顺序标记时,按照所述顺序标记从所述输出缓冲池的处理结果中拉取结果数据并输出。
进一步地,所述由所述计算线程组通过所述数据处理函数对所述输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池的步骤,包括:
由所述计算线程组中的各个线程从所述输入缓冲池中拉取数据,同时对处理中的数据数目进行计数,并进行数据处理,将处理结果推入输出缓冲池。
进一步地,所述分布式数据处理方法还包括:
当调用所述输出迭代器的获取元素方法时,判断所述输出缓冲池中是否存在数据;
如果所述输出缓冲池中不存在数据,判断所述计算线程组是否启动;
如果所述计算线程组未启动,启动所述计算线程组。
进一步地,在所述启动所述计算线程组的步骤之后,所述分布式数据处理方法还包括:
判断所述输入缓冲池中的数据量是否降低至预设值;
如果降低至所述预设值,执行所述从所述输入迭代器中拉取数据至输入缓冲池的步骤。
进一步地,所述输入迭代器为经mapPartitions操作得到的。
第二方面,本发明实施例还提供了一种分布式数据处理装置,包括:
获取模块,用于获取输入迭代器和数据处理参数;其中,所述输入迭代器为弹性分布式数据集RDD的每个分区对应的迭代器,所述输入迭代器中存储有所述RDD的相应分区中的待处理数据,所述数据处理参数包括数据处理函数和计算并行度;
创建模块,用于创建采用Spark作为分布式计算执行引擎的并行迭代器,所述并行迭代器包括输出迭代器和线程数为所述计算并行度的计算线程组,所述输入迭代器为所述并行迭代器的输入,所述计算线程组用于通过所述数据处理函数消费所述输入迭代器中的数据;
处理模块,用于当启动所述并行迭代器时,从所述输入迭代器中拉取数据至输入缓冲池,由所述计算线程组通过所述数据处理函数对所述输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由所述输出迭代器对所述输出缓冲池中的处理结果进行输出。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面所述方法。
第四方面,本发明实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行第一方面所述方法。
本发明实施例提供的分布式数据处理方法、装置、电子设备及存储介质,在进行分布式数据处理时,创建了采用Spark作为分布式计算执行引擎的并行迭代器,并行迭代器包括线程数为计算并行度的计算线程组,当启动并行迭代器时,从输入迭代器中拉取数据至输入缓冲池,由计算线程组通过数据处理函数对输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由输出迭代器对输出缓冲池中的处理结果进行输出。如此基于采用Spark作为分布式计算执行引擎的并行迭代器,进行多线程的数据处理,具备较高的计算并行度,同时避免了数据重分区,从而减小了计算开销。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式数据处理方法的流程示意图;
图2为本发明实施例提供的另一种分布式数据处理方法的执行时序图;
图3为本发明实施例提供的一种分布式数据处理装置的结构示意图;
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
Spark的程序执行模型基于RDD(Resilient Distributed Datasets,弹性分布式数据集)。RDD是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区,存储在内存中的RDD有助于共享数据,特别适合迭代式程序开发。
在一种可能的应用场景中,RDD可以存储互联网公司(如电商)采集的日志数据,利用Spark作为分布式计算执行引擎,对RDD中的日志数据进行处理,得到所需的结果数据。例如,日志数据包括浏览数据、商品交易数据、售后数据、用户个人数据(位置、性别、年龄等)等中的一种或多种,日志数据是标准化的数据,可以从日志数据中抽取核心字段,来计算用户最喜欢访问的网站、平均每天的网站访问量、平均每天的网站交易量等中的一种或多种。
由于存储系统的IO接口限制,通常在计算时配置较高的计算节点数,通过重分区操作实现结果数据的IO操作,这种方法存在如下缺陷:
1.重分区需要进行洗牌操作,而洗牌操作是一项开销较大的操作,其需要对数据进行磁盘缓存以及再读取,同时包含大量网络传输;
2.数据洗牌后除非指定排序,否则数据不会按RDD中原始数据的顺序进行输出(在某些场景下,按RDD中原始数据的顺序输出是必须的),而指定排序,则加剧洗牌操作的开销。
基于此,本发明实施例提供的一种分布式数据处理方法、装置、电子设备及存储介质,可以实现速度优化,在具备较高计算并行度的情况下,降低IO并行度,以尽可能在指定数量范围内的IO,最大化计算并行度,充分利用CPU的性能。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种分布式数据处理方法进行详细介绍。
本发明实施例提供了一种分布式数据处理方法,该方法可以由具有数据处理能力的电子设备执行。参见图1所示的一种分布式数据处理方法的流程示意图,该分布式数据处理方法主要包括如下步骤S102~步骤S106:
步骤S102,获取输入迭代器和数据处理参数;其中,输入迭代器为RDD的每个分区对应的迭代器,输入迭代器中存储有RDD的相应分区中的待处理数据,数据处理参数包括数据处理函数和计算并行度。
输入迭代器将相应分区内的所有元素都封装起来,元素不可被修改,只能被读取;其中,一个元素指一条待处理数据,待处理数据可以是互联网公司(如电商)采集的日志数据,日志数据可以包括浏览数据、商品交易数据、售后数据、用户个人数据(位置、性别、年龄等)等中的一种或多种。mapPartitions执行的操作是获取分区的迭代器,因此输入迭代器可以为经mapPartitions操作得到的。
上述数据处理函数是对每个元素的处理方案,数据处理函数的输入为输入迭代器中的一个元素,数据处理函数可以包括正常数据处理函数和异常数据处理函数。上述计算并行度可以是用户根据实际需求设置的。
步骤S104,创建采用Spark作为分布式计算执行引擎的并行迭代器,并行迭代器包括输出迭代器和线程数为计算并行度的计算线程组,输入迭代器为并行迭代器的输入,计算线程组用于通过数据处理函数消费输入迭代器中的数据。
计算线程组负责消费输入迭代器中的元素,并将输出吐出至输出迭代器的输入缓冲(即输出缓冲池)。数据处理函数的输入为输入迭代器中的一个元素,输出为输出迭代器中的一个或多个元素。
本发明实施例中将原来对RDD进行的map操作转换为mapPartitions操作,在mapPartitions中对输入迭代器使用本实施例的并行迭代器进行包装,作为并行迭代器的输入来源;将原来map操作的数据处理函数,设置为并行迭代器的元素处理函数。如此便完成了并行迭代器的改造优化,这种改造方式,改造范围小,无须其他依赖。
步骤S106,当启动并行迭代器时,从输入迭代器中拉取数据至输入缓冲池,由计算线程组通过数据处理函数对输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由输出迭代器对输出缓冲池中的处理结果进行输出。
上述输入缓冲池和输出缓冲池的大小可以自定义设置或者采用默认设置。
在一些可能的实施例中,在调用输出迭代器的获取元素方法(如hasNext()方法)时,计算线程组从输入缓冲池中拉取数据,并且首次调用会触发计算线程组的开始计算(即启动计算线程组的计算操作),输入缓冲池中始终包含一定的数据,以保证输出迭代器的顺畅拉取数据。基于此,上述步骤S106可以包括:当调用输出迭代器的获取元素方法时,判断输出缓冲池中是否存在数据;如果输出缓冲池中不存在数据,判断计算线程组是否启动;如果计算线程组未启动,启动计算线程组;判断输入缓冲池中的数据量是否降低至预设值;如果降低至预设值,执行从输入迭代器中拉取数据至输入缓冲池的步骤。
考虑到某些场景下,需要按照RDD中原始数据的顺序输出,在一些可能的实施例中,上述数据处理参数还包括是否保证有序,启动并行迭代器后,上述步骤S106可以包括:当是否保证有序为是时,从输入迭代器中拉取数据,对拉取出的每条数据进行顺序标记,并将带有顺序标记的数据输出至输入缓冲池;由计算线程组中的各个线程从输入缓冲池中拉取数据,同时对处理中的数据数目进行计数,并进行数据处理,将带有顺序标记的处理结果推入输出缓冲池;按照顺序标记从输出缓冲池的处理结果中拉取结果数据并输出。
本发明实施例提供的分布式数据处理方法,在进行分布式数据处理时,创建了采用Spark作为分布式计算执行引擎的并行迭代器,并行迭代器包括线程数为计算并行度的计算线程组,当启动并行迭代器时,从输入迭代器中拉取数据至输入缓冲池,由计算线程组通过数据处理函数对输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由输出迭代器对输出缓冲池中的处理结果进行输出。如此基于采用Spark作为分布式计算执行引擎的并行迭代器,进行多线程的数据处理,具备较高的计算并行度,同时避免了数据重分区,从而减小了计算开销。
上述分布式数据处理方法的一种可能的实现方式如下:
1.1.构建一个静态方法,输入参数为输入迭代器、数据处理函数和计算并行度。
1.2.当输入参数并行度为1时,即不使用优化,直接返回原迭代器。
1.3.在静态方法中创建一个匿名迭代器A。
1.4.匿名迭代器A内部创建一个计算线程组,其线程数为输入参数中的计算并行度。
1.5.匿名迭代器A的hasNext()方法实现方式:
1).首先判断是否存在计算好的数据,若存在计算好的数据,则直接返回true;若不存在计算好的数据,则判断计算线程组是否启动,若计算线程组没有启动,则标记为启动,同时启动计算线程组;
2).若计算线程组已启动,则进行以下步骤;
3).判断输入缓冲池是否数据下降到一定量,若是,则从输入迭代器拉取数据至输入缓冲池,并根据是否保证有序,来决定是否给数据打上顺序标记,之后执行4);若否,则直接执行4);
4).判断输出缓冲池是否有数据;若是,则直接执行7);若否,则执行5);
5).判断计算线程组是否结束(若计算线程组线程池中包含计算中的数据,则计算线程组未结束;反之,则计算线程组结束);若是,则流程结束;若否,则执行6);
6).等待直至输出缓冲池不为空;
7).从输出缓冲池中拉取下一条应当拉取的数据,并设置为结果数据,之后返回true。
1.6.计算线程组里的各个线程则是不断拉取输入缓冲池中的数据,同时对计算中的数据数目进行计数,并进行数据处理计算,将计算得到的返回值推入输出缓冲池。
1.7.匿名迭代器A的next()的实现方式:
首先调用hasNext()来判断是否还有数据,若无,则抛出错误(表明使用错误);若有,将是否存在计算好的数据设置为false,并返回计算好的数据。
1.8.如此拥有了这2个方法即满足一个迭代器的必备方法,返回这个匿名迭代器A,该匿名迭代器A便为并行迭代器。
其中,当将数据拉取存盘时会触发调用hasNext()方法请求,hasNext()的返回值是bool值,作用是当在缓冲区内扫描到字符时,会返回true,否则会发生阻塞,等待数据输入。通过调用hasNext()方法,判断下一个地址是否存在元素;如果下一地址有元素,则通过调用next()方法,将该地址的元素值返回给定义的变量,调用next()方法后,指针p会自动移向下一元素的地址;当下一地址没有元素(一般以此作为遍历结束的标志),则不能调用next()方法,如果强行调用则会抛出异常。getNext()方法返回指定集合中的下一个对象,如果不存在下一个对象(如当前对象已经位于集合的末尾时),将返回Nothing。
上述分布式数据处理方法的数据处理流程如下:
1、获取输入参数,包括输入迭代器、数据处理函数和计算并行度。
2、创建一个计算线程组,其线程数为输入参数中的计算并行度。
3、当调用hasNext()方法时,判断输出缓冲池是否存在计算好的结果数据;如果是,则执行步骤12;如果否,则执行步骤4。
4、判断计算线程组是否启动;如果否,执行步骤5;如果是,执行步骤6。
5、启动计算线程组,并标记为启动,以使计算线程组里的各个线程,不断拉取输入缓冲池中的数据,通过数据处理函数进行数据处理计算,并将处理结果推入输出缓冲池。之后执行步骤6。
6、判断输入缓冲池是否数据下降到一定量;如果是,则执行步骤7;如果否,则执行步骤8。
7、从输入迭代器拉取数据至输入缓冲池,并根据是否保证有序,来决定是否给数据打上顺序标记。之后执行步骤8。
8、判断输出缓冲池是否有处理结果;如果是,则执行步骤11;如果否,则执行步骤9。
9、判断计算线程组是否结束;如果是,则结束流程;如果否,则执行步骤10。
10、等待预设时间,重新执行步骤8;
11、从输出缓冲池中拉取下一条应当拉取的数据,并设置为结果数据。之后执行步骤12。
12、返回true,以作为后续能否调用next()方法的依据。
13、当调用next()方法时,调用hasNext()方法来判断输出缓冲池是否存在计算好的结果数据;如果否,则执行步骤14;如果是,则执行步骤15。
14、返回false给用户;流程结束。
15、将是否存在计算好的结果数据设置为false,并返回计算好的结果数据。
为了便于理解,本发明实施例还提供了上述分布式数据处理方法的执行时序图,如图2所示,迭代器使用者调用hasNext()方法,从输出迭代器获取结果数据;输出迭代器调用getNext()方法,从输出缓冲池拉取结果数据;输出缓冲池调用计算线程组的计算;计算线程组调用输入迭代器的hasNext()方法,从输入缓冲池中拉取数据;输入缓冲池调用hasNext()方法,判断输入迭代器是否存在待处理数据;输入迭代器存在待处理数据,则向输入缓冲池返回true;输入缓冲池调用next()方法,从输入迭代器拉取待处理数据(P);输入迭代器返回待处理数据(P)给输入缓冲池,计算线程组则从输入缓冲池中拉取数据作为待处理数据;计算线程组通过数据处理函数对待处理数据进行计算处理,并推送处理结果给输出缓冲池;输出缓冲池为空时,则代表计算线程组计算完毕,且所有输入数据已处理完毕,输出迭代器返回false给迭代器使用者,流程结束;输出缓冲池有数据时,输出迭代器返回true给迭代器使用者,迭代器使用者调用next()方法,向输出迭代器获取结果数据(T),输出迭代器向迭代器使用者返回结果数据(T)。
对应于上述的分布式数据处理方法,本发明实施例还提供了一种分布式数据处理装置,参见图3所示的一种分布式数据处理装置的结构示意图,该分布式数据处理装置包括:
获取模块301,用于获取输入迭代器和数据处理参数;其中,输入迭代器为弹性分布式数据集RDD的每个分区对应的迭代器,输入迭代器中存储有RDD的相应分区中的待处理数据,数据处理参数包括数据处理函数和计算并行度;
创建模块302,用于创建采用Spark作为分布式计算执行引擎的并行迭代器,并行迭代器包括输出迭代器和线程数为计算并行度的计算线程组,输入迭代器为并行迭代器的输入,计算线程组用于通过数据处理函数消费输入迭代器中的数据;
处理模块303,用于当启动并行迭代器时,从输入迭代器中拉取数据至输入缓冲池,由计算线程组通过数据处理函数对输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由输出迭代器对输出缓冲池中的处理结果进行输出。
本发明实施例提供的分布式数据处理装置,在进行分布式数据处理时,创建了采用Spark作为分布式计算执行引擎的并行迭代器,并行迭代器包括线程数为计算并行度的计算线程组,当启动并行迭代器时,从输入迭代器中拉取数据至输入缓冲池,由计算线程组通过数据处理函数对输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由输出迭代器对输出缓冲池中的处理结果进行输出。如此基于采用Spark作为分布式计算执行引擎的并行迭代器,进行多线程的数据处理,具备较高的计算并行度,同时避免了数据重分区,从而减小了计算开销。
进一步地,上述数据处理参数还包括是否保证有序;上述处理模块303具体用于:当是否保证有序为是时,从输入迭代器中拉取数据,对拉取出的每条数据进行顺序标记,并将带有顺序标记的数据输出至输入缓冲池。
进一步地,上述处理模块303还用于:当输出缓冲池中的处理结果带有顺序标记时,按照顺序标记从输出缓冲池的处理结果中拉取结果数据并输出。
进一步地,上述处理模块303还用于:由计算线程组中的各个线程从输入缓冲池中拉取数据,同时对处理中的数据数目进行计数,并进行数据处理,将处理结果推入输出缓冲池。
进一步地,上述处理模块303还用于:当调用输出迭代器的获取元素方法时,判断输出缓冲池中是否存在数据;如果输出缓冲池中不存在数据,判断计算线程组是否启动;如果计算线程组未启动,启动计算线程组。
进一步地,上述处理模块303还用于:判断输入缓冲池中的数据量是否降低至预设值;如果降低至预设值,执行从输入迭代器中拉取数据至输入缓冲池的步骤。
进一步地,上述输入迭代器为经mapPartitions操作得到的。
本实施例所提供的分布式数据处理装置,其实现原理及产生的技术效果和前述分布式数据处理方法实施例相同,为简要描述,分布式数据处理装置实施例部分未提及之处,可参考前述分布式数据处理方法实施例中相应内容。
如图4所示,本发明实施例提供的一种电子设备400,包括:处理器401、存储器402和总线,存储器402存储有可在处理器401上运行的计算机程序,当电子设备400运行时,处理器401与存储器402之间通过总线通信,处理器401执行计算机程序,以实现上述分布式数据处理方法。
具体地,上述存储器402和处理器401能够为通用的存储器和处理器,这里不做具体限定。
本发明实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前面方法实施例中所述的分布式数据处理方法。该存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
附图中的流程图和框图显示了根据本发明的多个实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种分布式数据处理方法,其特征在于,包括:
获取输入迭代器和数据处理参数;其中,所述输入迭代器为弹性分布式数据集RDD的每个分区对应的迭代器,所述输入迭代器中存储有所述RDD的相应分区中的待处理数据,所述数据处理参数包括数据处理函数和计算并行度;
创建采用Spark作为分布式计算执行引擎的并行迭代器,所述并行迭代器包括输出迭代器和线程数为所述计算并行度的计算线程组,所述输入迭代器为所述并行迭代器的输入,所述计算线程组用于通过所述数据处理函数消费所述输入迭代器中的数据;
当启动所述并行迭代器时,从所述输入迭代器中拉取数据至输入缓冲池,由所述计算线程组通过所述数据处理函数对所述输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由所述输出迭代器对所述输出缓冲池中的处理结果进行输出。
2.根据权利要求1所述的分布式数据处理方法,其特征在于,所述数据处理参数还包括是否保证有序;所述从所述输入迭代器中拉取数据至输入缓冲池的步骤,包括:
当所述是否保证有序为是时,从所述输入迭代器中拉取数据,对拉取出的每条数据进行顺序标记,并将带有顺序标记的数据输出至输入缓冲池。
3.根据权利要求2所述的分布式数据处理方法,其特征在于,所述由所述输出迭代器对所述输出缓冲池中的处理结果进行输出的步骤,包括:
当所述输出缓冲池中的处理结果带有顺序标记时,按照所述顺序标记从所述输出缓冲池的处理结果中拉取结果数据并输出。
4.根据权利要求1所述的分布式数据处理方法,其特征在于,所述由所述计算线程组通过所述数据处理函数对所述输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池的步骤,包括:
由所述计算线程组中的各个线程从所述输入缓冲池中拉取数据,同时对处理中的数据数目进行计数,并进行数据处理,将处理结果推入输出缓冲池。
5.根据权利要求1所述的分布式数据处理方法,其特征在于,所述分布式数据处理方法还包括:
当调用所述输出迭代器的获取元素方法时,判断所述输出缓冲池中是否存在数据;
如果所述输出缓冲池中不存在数据,判断所述计算线程组是否启动;
如果所述计算线程组未启动,启动所述计算线程组。
6.根据权利要求5所述的分布式数据处理方法,其特征在于,在所述启动所述计算线程组的步骤之后,所述分布式数据处理方法还包括:
判断所述输入缓冲池中的数据量是否降低至预设值;
如果降低至所述预设值,执行所述从所述输入迭代器中拉取数据至输入缓冲池的步骤。
7.根据权利要求1所述的分布式数据处理方法,其特征在于,所述输入迭代器为经mapPartitions操作得到的。
8.一种分布式数据处理装置,其特征在于,包括:
获取模块,用于获取输入迭代器和数据处理参数;其中,所述输入迭代器为弹性分布式数据集RDD的每个分区对应的迭代器,所述输入迭代器中存储有所述RDD的相应分区中的待处理数据,所述数据处理参数包括数据处理函数和计算并行度;
创建模块,用于创建采用Spark作为分布式计算执行引擎的并行迭代器,所述并行迭代器包括输出迭代器和线程数为所述计算并行度的计算线程组,所述输入迭代器为所述并行迭代器的输入,所述计算线程组用于通过所述数据处理函数消费所述输入迭代器中的数据;
处理模块,用于当启动所述并行迭代器时,从所述输入迭代器中拉取数据至输入缓冲池,由所述计算线程组通过所述数据处理函数对所述输入缓冲池中的数据进行数据处理,将处理结果推入输出缓冲池,并由所述输出迭代器对所述输出缓冲池中的处理结果进行输出。
9.一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7中任一项所述的分布式数据处理方法。
10.一种存储介质,所述存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1-7中任一项所述的分布式数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211452286.8A CN115934317A (zh) | 2022-11-21 | 2022-11-21 | 分布式数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211452286.8A CN115934317A (zh) | 2022-11-21 | 2022-11-21 | 分布式数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934317A true CN115934317A (zh) | 2023-04-07 |
Family
ID=86554946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211452286.8A Pending CN115934317A (zh) | 2022-11-21 | 2022-11-21 | 分布式数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934317A (zh) |
-
2022
- 2022-11-21 CN CN202211452286.8A patent/CN115934317A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3667496B1 (en) | Distributed computing system, data transmission method and device in distributed computing system | |
CN111949650A (zh) | 一种多语言融合查询方法及多模数据库系统 | |
CN103970520A (zh) | MapReduce架构中的资源管理方法、装置和架构系统 | |
GB2508503A (en) | Batch evaluation of remote method calls to an object oriented database | |
CN106919438B (zh) | 一种虚拟化环境中工作流处理方法和框架装置 | |
CN109492024A (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
CN116662038B (zh) | 基于共享内存的工业信息检测方法、装置、设备及介质 | |
CN115150471A (zh) | 数据处理方法、装置、设备、存储介质及程序产品 | |
US20200252314A1 (en) | Method and apparatus for managing network connection, and storage medium | |
CN115408391A (zh) | 一种数据库表变更方法、装置、设备和存储介质 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN110781159A (zh) | Ceph目录文件信息读取方法、装置、服务器及存储介质 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
CN108763421B (zh) | 一种基于逻辑电路的数据搜索方法及系统 | |
CN110727666A (zh) | 面向工业互联网平台的缓存组件、方法、设备及存储介质 | |
CN108062224B (zh) | 基于文件句柄的数据读写方法、装置及计算设备 | |
CN115934317A (zh) | 分布式数据处理方法、装置、电子设备及存储介质 | |
CN115114332A (zh) | 一种数据库查询方法、装置、设备及可读存储介质 | |
CN114328486A (zh) | 基于模型的数据质量核查方法及装置 | |
CN109902067B (zh) | 文件处理方法、装置、存储介质及计算机设备 | |
CN116804915B (zh) | 基于存储器的数据交互方法、处理器、设备以及介质 | |
CN117992242B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN117390040B (zh) | 基于实时宽表的业务请求处理方法、设备及存储介质 | |
CN112084297B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112783925B (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 |