本说明书一个或多个实施例涉及计算引擎,尤其涉及一种表连接的方法及装置。
背景技术:
1、在常见的计算引擎(computing engine)中,常常存在多种用于连接的操作类型,例如包括广播哈希连接(broadcast hash join,bhj)操作、分发排序哈希(shuffled hashjoin,shj)连接和排序合并连接(sort merge join,smj)操作等。其中,由于bhj操作通常仅将被连接的数据量大的表和数据量小的表中,数据量小的表中的数据分发到多个计算节点上,然后在各个计算节点上与数据量大的表中的数据进行局部连接操作,而对数据量大的表中的数据则不做数据分发(shuffled)。而其它连接类型通常对数据量大的表中的数据则也做数据分发。因此,广播哈希连接的所消耗的网络资源、计算资源和计算时间,通常相对于其他连接类型通常较好。但是,在现有的确定计算引擎中用于表连接的执行计划(plan)的方案中,对于连接类型的确认方式使得通过广播哈希连接进行表连接的几率较低,即使得执行计划中广播哈希连接的覆盖率较低。进而,这类执行计划所消耗的网络资源、计算资源和计算时间均较高,计算性能较差。因此,需要一种新的表连接的方法。
技术实现思路
1、本说明书中的实施例旨在提供一种表连接的方法及装置,可以有效提高用于连接表的执行计划中广播哈希连接的覆盖率,进而减少执行计划所消耗的网络资源、计算资源和计算时间,提高执行计划的计算性能,解决现有技术的不足。
2、根据第一方面,提供了一种提高计算引擎中表连接执行计划的计算性能的方法,包括:
3、若当前待连接的第一表和第二表是基于非广播哈希连接的方式进行连接,则确定第一表的数据分片分发到各计算节点所占内存的容量;其中,第一表的数据量小于第二表的数据量;第一表的数据被执行分片操作;
4、如果所占内存容量不大于计算节点的预设内存容量,则将所述非广播哈希连接的方式转换为广播哈希连接的方式来执行第一表和第二表的连接。
5、在一种可能的实施方式中,第一表和第二表是基于非广播哈希连接的方式进行连接,包括:
6、通过运行目标计算引擎中的执行计划,对所述第一表和第二表以基于非广播哈希连接的方式进行连接,其中,所述执行计划包括并行计算的第一分支和第二分支,所述第一分支用于读取第一表的数据、以及对第一表的数据执行分片操作,所述第二分支用于读取第二表的数据、以及对第二表的数据执行分片操作;
7、确定第一表的数据分片分发到各计算节点所占内存的容量,包括:阻塞第二分支,执行第一分支,确定第一表的数据分片分发到各计算节点所占内存的容量。
8、在一种可能的实施方式中,读取第一表的第一数据包括:如果所占内存容量不大于计算节点的预设内存容量,则将所述非广播哈希连接的方式转换为广播哈希连接的方式来执行第一表和第二表的连接,包括:
9、如果所占内存容量不大于计算节点的预设内存容量,则修改第二分支,从中去除对第二表的数据执行分片操作的部分,将第一表和第二表的连接方式转换为广播哈希连接的方式;解除对修改后的第二分支的阻塞,基于修改后的第二分支的执行结果确定第一表和第二表的连接结果。
10、在一种可能的实施方式中,所述方法还包括:若所占内存容量大于计算节点的预设内存容量,对第二分支解除阻塞,基于解除阻塞后的第二分支的执行结果确定第一表和第二表的连接结果。
11、在一种可能的实施方式中,在所述执行计划中包括指示执行第二分支的第一指令;
12、阻塞所述第二分支的执行,包括:
13、从所述执行计划中去除所述第一指令,在所述第一指令的原位置插入指示阻塞所述第二分支的预设指令。
14、在一种可能的实施方式中,所述第二分支包括用于执行对第二表的数据的分片操作的第二指令;
15、修改第二分支,从中去除对第二表的数据执行分片操作的部分,包括:从所述第二分支中去除所述第二指令。
16、在一种可能的实施方式中,解除对修改后的第二分支的阻塞,基于修改后的第二分支的执行结果确定第一表和第二表的连接结果,包括:解除对修改后的第二分支的阻塞,基于已执行的第一分支的执行结果和修改后的第二分支的执行结果,确定第一表和第二表的连接结果。
17、在一种可能的实施方式中,将第一表和第二表的连接方式转换为广播哈希连接的方式,包括:在所述执行计划中添加第三分支,所述第三分支包含所述第一分支,所述第三分支还用于根据各个计算节点上第一表的数据分片确定完整的第一表的数据,将所述完整的第一表的数据发送到所述多个计算节点:
18、基于已执行的第一分支的执行结果和修改后的第二分支的执行结果,确定所述广播哈希连接操作的执行结果,包括:
19、基于已执行的第一分支的执行结果,确定第三分支的执行结果,基于第三分支的执行结果和修改后的第二分支的执行结果,确定第一表和第二表的连接结果。
20、在一种可能的实施方式中,第一表的数据在被执行分片操作之前,还被执行数据过滤操作和/或数据扩展操作。
21、在一种可能的实施方式中,所述第一表的数据,包括,从永久存储介质读取的第一表的数据。
22、根据第二方面,提供了一种表连接的装置,部署在图像采集终端中,所述装置包括:
23、确定单元,配置为,若当前待连接的第一表和第二表是基于非广播哈希连接的方式进行连接,则确定第一表的数据分片分发到各计算节点所占内存的容量;其中,第一表的数据量小于第二表的数据量;第一表的数据被执行分片操作;
24、转换单元,配置为,如果所占内存容量不大于计算节点的预设内存容量,则将所述非广播哈希连接的方式转换为广播哈希连接的方式来执行第一表和第二表的连接。
25、根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
26、根据第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
27、利用以上各个方面中的方法、装置、计算设备、存储介质中的一个或多个,可以有效提高用于连接表的执行计划中广播哈希连接的覆盖率,进而减少执行计划所消耗的计算资源、网络资源和计算时间,以及提高执行计划的计算性能。
1.一种表连接的方法,包括:
2.根据权利要求1所述的方法,其中,第一表和第二表是基于非广播哈希连接的方式进行连接,包括:
3.根据权利要求2所述的方法,其中,如果所占内存容量不大于计算节点的预设内存容量,则将所述非广播哈希连接的方式转换为广播哈希连接的方式来执行第一表和第二表的连接,包括:
4.根据权利要求2所述的方法,还包括:
5.根据权利要求2所述的方法,其中,在所述执行计划中包括指示执行第二分支的第一指令;
6.根据权利要求3所述的方法,其中,所述第二分支包括用于执行对第二表的数据的分片操作的第二指令;
7.根据权利要求3所述的方法,其中,解除对修改后的第二分支的阻塞,基于修改后的第二分支的执行结果确定第一表和第二表的连接结果,包括:解除对修改后的第二分支的阻塞,基于已执行的第一分支的执行结果和修改后的第二分支的执行结果,确定第一表和第二表的连接结果。
8.根据权利要求7所述的方法,其中,将第一表和第二表的连接方式转换为广播哈希连接的方式,包括:在所述执行计划中添加第三分支,所述第三分支包含所述第一分支,所述第三分支还用于根据各个计算节点上第一表的数据分片确定完整的第一表的数据,将所述完整的第一表的数据发送到所述多个计算节点:
9.根据权利要求1所述的方法,其中,第一表的数据在被执行分片操作之前,还被执行数据过滤操作和/或数据扩展操作。
10.根据权利要求1所述的方法,其中,所述第一表的数据,包括,从永久存储介质读取的第一表的数据。
11.一种表连接的装置,所述装置包括:
12.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-10中任一项的所述的方法。
13.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-10中任一项所述的方法。