CN117807091A - 数据的关联方法及装置 - Google Patents
数据的关联方法及装置 Download PDFInfo
- Publication number
- CN117807091A CN117807091A CN202410068603.9A CN202410068603A CN117807091A CN 117807091 A CN117807091 A CN 117807091A CN 202410068603 A CN202410068603 A CN 202410068603A CN 117807091 A CN117807091 A CN 117807091A
- Authority
- CN
- China
- Prior art keywords
- data
- association
- dimension table
- fact table
- strategy
- 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
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012163 sequencing technique Methods 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 claims description 31
- 238000005192 partition Methods 0.000 claims description 22
- 238000003860 storage Methods 0.000 claims description 13
- 238000009826 distribution Methods 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 abstract description 10
- 230000006978 adaptation Effects 0.000 abstract description 5
- 238000004590 computer program Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006880 cross-coupling reaction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据的关联方法及装置,应用于分布式计算引擎Spark的服务器,所述方法包括:获取待关联的维度表和事实表,所述维度表和所述事实表中的每个数据都具有标识编号;根据所述维度表的数据量和所述事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,所述多个预设的数据关联策略包括广播哈希连接策略、排序合并连接策略以及自定义过滤器连接策略;根据所述目标数据关联策略和所述标识编号对所述维度表和所述事实表中的数据进行关联。通过根据维度表和事实表的数据量动态选择合适的数据关联策略,实现数据关联策略与计算任务的适配,提高了数据的关联效率。
Description
技术领域
本申请涉及数据关联领域,尤其涉及一种数据的关联方法及装置。
背景技术
随着大数据时代的到来,如何通过技术手段快速地挖掘隐藏在大数据下的深层次关系,并将其应用于业务场景,成为企业重点关注的问题。
业务系统数据库表设计一般需要满足第三范式模型,要求所有非主键列都直接依赖主键,不包含传递依赖,导致贴源层底表数量繁多。为了方便统计业务指标、管理数据质量、减少开发工作,数据仓库和数据集市等概念便孕育而生为了满足大数据量级快速、高效地计算,许多分布式计算引擎都支持通用数据关联语法,对使用者透明屏蔽了底层分布式关联原理,从而提升引擎的易用性。
在大部分工作场景中,经常会使用较大量级的事实表和维度表关联,经研究发现分布式计算引擎Spark所提供的原生数据关联算法,仅能够根据预设的固定数据关联策略执行任务,在部分场景下由于数据统计信息的缺失,会导致计算引擎固定使用的数据关联策略无法适配计算任务,进而影响任务整体执行效率。
发明内容
本申请实施例提供一种数据的关联方法及装置,以实现根据维度表和事实表的数据量动态选择合适的数据关联策略,实现数据关联策略与计算任务的适配,提高数据的关联效率。
第一方面,本申请实施例提供了一种数据的关联方法,包括:
获取待关联的维度表和事实表,所述维度表和所述事实表中的每个数据都具有标识编号;
根据所述维度表的数据量和所述事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,所述多个预设的数据关联策略包括广播哈希连接策略、排序合并连接策略以及自定义过滤器连接策略;根据所述目标数据关联策略和所述标识编号对所述维度表和所述事实表中的数据进行关联。
第二方面,本申请实施例提供了一种数据的关联装置,包括:
获取模块,用于获取待关联的维度表和事实表,所述维度表和所述事实表中的每个数据都具有标识编号;
控制模块,用于根据所述维度表的数据量和所述事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,所述多个预设的数据关联策略包括广播哈希连接策略、排序合并连接策略以及自定义过滤器连接策略;以及用于根据所述目标数据关联策略和所述标识编号对所述维度表和所述事实表中的数据进行关联。
第三方面,本申请实施例提供了一种数据的关联装置,设备包括:
存储器、处理器及存储在存储器上并可在处理器上运行的数据的关联程序,数据的关联程序配置为实现如第一方面中任一方法中所描述的部分或全部步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有数据的关联程序,数据的关联程序被处理器执行时实现如第一方面中任一方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,计算机程序产品包括计算机程序,计算机程序可操作来使计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
通过实施本申请实施例,分布式计算引擎Spark的服务器首先获取待关联的维度表和事实表,维度表和事实表中的每个数据都具有标识编号;然后根据维度表的数据量和事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,多个预设的数据关联策略包括广播哈希连接策略、排序合并连接策略以及自定义过滤器连接策略;最后根据目标数据关联策略对维度表和事实表中的数据进行关联。通过根据维度表和事实表的数据量动态选择合适的数据关联策略,实现数据关联策略与计算任务的适配,提高了数据的关联效率。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请实施例提供的一种分布式计算引擎Spark的系统架构图;
图2是本申请实施例提供的一种数据的关联方法的流程图;
图3是本申请实施例提供的一种自定义过滤器连接策略的流程图;
图4是本申请实施例提供的一种自定义过滤器连接策略的框架图;
图5是本申请实施例提供的一种过滤器的结构示意图;
图6是本申请实施例提供的一种数据的关联装置的结构示意图;
图7是本申请实施例提供的另一种数据的关联装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请的说明书和权利要求书及附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面先对本申请实施例涉及到的关键概念和特征进行解释说明。
(1)分布式计算引擎:原有单台机器计算方式,在处理大数据量时,会遇到瓶颈运算速度非常慢,因此引入分布式计算框架,主要原理是将一个计算任务尽量均分成多块,分配到多台机器上并行运行,尽可能利用机器资源从而加快计算速度、提高运行效率。
(2)Spark:Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类HadoopMapReduce的通用并行框架,Spark--Job中间输出结果可以保存在内存中,从而不再需要读写Hadoop分布式文件系统(Hadoop Distributed File System,HDFS),因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
(3)Join key:连接关键字或关联键,进行关联操作的表格中每个数据都具有一个Joinkey,用于判断不同表格中的数据是否可以关联。
(4)BroadcastHashJoin:也称之为Map端JOIN。当有一张表较小时,我们通常选择BroadcastHashJoin,这样可以避免Shuffle带来的开销,从而提高性能。比如事实表与维表进行JOIN时,由于维表的数据通常会很小,所以可以使用BroadcastHashJoin将维表进行Broadcast。这样可以避免数据的Shuffle(在Spark中Shuffle操作是很耗时的),从而提高JOIN的效率。在进行Broadcast Join之前,Spark需要把处于Executor端的数据先发送到Driver端,然后Driver端再把数据广播到Executor端。
(5)SortMergeJoin:该JOIN机制是Spark默认的,确定JOIN机制是否使用SortMergeJoin可以通过参数spark.sql.join.preferSortMergeJoin进行配置,默认是true,即优先使用SortMergeJoin。一般在两张大表进行JOIN时,使用该方式。SortMergeJoin可以减少集群中的数据传输,该方式不会先加载所有数据的到内存,然后进行hashjoin,但是在JOIN之前需要对joinkey进行排序。
(6)洗牌操作(shuffle):shuffle就是对数据进行重组,由于分布式计算的特性和要求,在实现细节上更加繁琐和复杂在MapReduce框架,shuffle是连接Map和Reduce之间的桥梁,Map阶段通过shuffle读取数据并输出到对应的Reduce;而Reduce阶段负责从Map端拉取数据并进行计算。
(7)关联操作(join):join是关系型数据库系统的重要操作之一,常用join类型包括:内联接、外联接和交叉联接等。如果想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,需要考虑使用join语法。
随着大数据时代的到来,如何通过技术手段快速地挖掘隐藏在大数据下的深层次关系,并将其应用于业务场景,成为企业重点关注的问题。业务系统数据库表设计一般需要满足第三范式模型,要求所有非主键列都直接依赖主键,不包含传递依赖,导致贴源层底表数量繁多。为了方便统计业务指标、管理数据质量、减少开发工作,数据仓库和数据集市等概念便孕育而生为了满足大数据量级快速、高效地计算,许多分布式计算引擎都支持通用数据关联语法,对使用者透明屏蔽了底层分布式关联原理,从而提升引擎的易用性。
在大部分工作场景中,经常会使用较大量级的事实表和维度表关联,经研究发现分布式计算引擎Spark所提供的原生数据关联算法,仅能够根据预设的固定数据关联策略执行任务,在部分场景下由于数据统计信息的缺失,会导致计算引擎固定使用的数据关联策略无法适配计算任务,进而影响任务整体执行效率。
针对上述问题,本申请实施例提供一种数据的关联方法及装置,分布式计算引擎Spark的服务器首先获取待关联的维度表和事实表,维度表和事实表中的每个数据都具有标识编号;然后根据维度表的数据量和事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,多个预设的数据关联策略包括广播哈希连接策略、排序合并连接策略以及自定义过滤器连接策略;最后根据目标数据关联策略对维度表和事实表中的数据进行关联。通过根据维度表和事实表的数据量动态选择合适的数据关联策略,实现数据关联策略与计算任务的适配,提高了数据的关联效率。
请参阅图1,图1是本申请实施例提供的一种分布式计算引擎Spark的系统架构图,该分布式计算引擎Spark 100包括服务器101和客户端102,其中,客户端102可以是计算机、移动终端、手持式终端、蜂窝式终端等终端,主要用于开发人员对维度表和事实表的数据进行上传和编辑,客户端102支持在本地云对维度表和事实表进行更新,客户端102可以与服务器101或其他设备进行通信连接,通过通信连接客户端102可以访问和调用存储于服务器101或其它设备中的数据。
分布式计算引擎Spark 100的服务器101可以为一个服务器或者多个服务器组成的服务器集群,用于对维度表和事实表的数据进行关联,服务器101能够通过与客户端102建立通信连接以接收和发送维度表和事实表的数据,可选的,服务器101以与位于本地的或是位于云端的代码存储仓库进行通信连接,以此获取对维度表和事实表进行数据关联的源码。
基于此,本申请提供了一种数据的关联方法及装置,下面结合附图对本申请进行详细说明。
请参阅图2,图2是本申请实施例提供的一种数据的关联方法的流程图,如图2所示,该方法包括如下步骤:
S201,获取待关联的维度表和事实表;
其中,维度表和事实表中的每个数据都具有标识编号,该标识编号用于区分不同的数据并将具有维度表和事实表中具有相同标识编号的数据关联,标识编号又可以表述为Join key,示例性地,维度表中item1的标识编号为1,item2的标识编号为2,item3的标识编号为3,事实表中item4的标识编号为3,item5的标识编号为4,item6的标识编号为1,此时事实表中item4与维度表中item3的数据关联,事实表中item6与维度表中item1的数据关联。
其中,事实表存储在维度建模的数据仓库中,事实表是指存储有事实记录的表,如系统的日志、销售记录、用户访问日志等信息,事实表的记录是动态的增长的,所以体积是大于维度表。维度表也称为查找表,是与事实表相对应的表,这个表保存了维度的属性值,可以跟事实表做关联,相当于是将事实表中经常重复的数据抽取、规范出来用一张表管理,常见的有日期(日、周、月、季度等属性)、地区表等,所以维度表的变化通常不会太大。
示例性的,在电商业务的管理场景中,用于存储商品信息,商品价格,商品条形码或二维码信息以及商品折扣信息的表格为维度表,通常不会有较大变化,而用于存储每个时间周期内商场所有销售的商品信息,商品价格,商品数量以及商品营收等信息的表格为事实表,事实表的数据量会随时间动态增加。
S202,根据维度表的数据量和事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略;
其中,多个预设的数据关联策略包括广播哈希连接(BroadcastHashJoin)策略、排序合并连接(SortMergeJoin)策略以及自定义过滤器连接(CustomFilterJoin)策略。
其中,像Hive和Spark等分布式计算引擎,在SQL解析阶段就已经完成数据关联策略的选择,并不会在任务运行时,根据当前关联数据量级动态调整数据关联策略,而本方案可以根据维度表和事实表的数据量从多个预设的数据关联策略中选择合适的数据关联策略。
S203,根据目标数据关联策略对维度表和事实表中的数据进行关联;
可见,在本示例中,通过根据维度表和事实表的数据量动态选择合适的数据关联策略,实现数据关联策略与计算任务的适配,提高了数据的关联效率。
在一种可能的实现方式中,请参阅图3,图3是本申请实施例提供的一种自定义过滤器连接策略的流程图,如图3所示,本申请提出的自定义过滤器连接策略算法包括以下步骤:
S301,通过预设的哈希函数和所述维度表构建数据过滤器;
在一种可能的实现方式中,步骤S301包括以下步骤:
初始化一个包括m个均为0的元素的数组,m为正整数;初始化一个包括k个互相独立的哈希函数的哈希函数组,k为正整数;将根据所述哈希函数组获取的所述维度表中不同元素对应的哈希值作为关联索引值;通过将所述数组中元素序号等于所述关联索引值的值更新为1得到所述维度表的关联数组,所述关联数组为数据过滤器。
其中,使用的哈希函数为业内常用的Murmurhash哈希算法,也可以选用其他性能优秀的哈希算法,在此不对使用的哈希算法进行限制,m和k的数值可以根据维度表和事实表的数据量大小进行调节。
示例性地,请参阅图5,图5是本申请实施例提供的一种过滤器的结构示意图,如图5所示,Spark的服务器首先初始化一个数组,数组的所有位标为0,每个元素代表一个二进制位,数组Q={a0,a1,a2,…,a9},且a0、a1、a2、…a9初始均为0,m=10,即总二进制位个数为10,然后选择两个相互独立的哈希函数HashFunction1和HashFunction2,虚线框A中的item1和item2是维度表中的数据的标识编号,item1经过HashFunction1后得到一个索引值1,item1经过HashFunction2后得到一个索引值4,item2经过HashFunction1后得到一个索引值5,item2经过HashFunction2后得到一个索引值8,此时数组将位标等于索引值1,4,5,8的二进制位的值更新为1,此过程为添加过程,之后通过虚线框B中属于事实表的item1和itemX进行查询操作,在查询事实表的item1时,通过将item1经过HashFunction1和HashFunction2得到索引值1和4,数组Q中位标等于1和4的值均为1,此过程为查询过程。
其中,添加过程和查询过程的时间复杂度为O(k),其中k为哈希函数的个数,空间复杂度为O(m),其中m为二进制位的个数。
可见,在本示例中,通过多个相互独立的哈希函数得到的索引值构建哈希函数,有利于提高基于维度表构建的过滤器的精确度,减少数据误判概率。
S302,通过所述数据过滤器对所述事实表进行过滤得到有效事实表;
在一种可能的实现方式中,步骤S302包括以下步骤:
将根据所述哈希函数组获取的所述事实表中不同元素对应的哈希值作为查询索引值;判断所述数据过滤器中元素序号等于所述查询索引值的值是否等于1;若检测到所述数据过滤器中元素序号等于所述查询索引值的值等于1,则确定所述查询索引值对应的元素为有效数据;若检测到所述数据过滤器中元素序号等于所述查询索引值的值不等于1,则确定所述查询索引值对应的元素为无效数据;通过去除所述事实表中的无效数据得到有效事实表。
参见上述示例,请再次参阅图5,图5中在查询过程确定事实表中的item1的索引值在数组Q中等于1,此时认为实施表中的item1为有效数据,同理,itemX在经过HashFunction1和HashFunction2后得到索引值6和8,而数组Q中位标等于6的值为0,所以itemX为无效数据。
可见,在本示例中,通过过滤器将事实表中索引值不等于1的数据作为无效数据并去除,可以提高无效数据的过滤效率,为后续操作减少无效数据量,提高数据的关联效率。
S303,通过对所述有效事实表和所述维度表进行shuffle操作得到第一分区数据;
S304,通过对所述第一分区数据进行sort操作得到第二分区数据;
S305,对所述第二分区数据进行join操作;
具体地,请参阅图4,图4是本申请实施例提供的一种自定义过滤器连接策略的框架图,如图4所述,在进行自定义过滤器连接策略作为关联策略时,会先基于维度表构建一个数据过滤器,然后基于该数据过滤器对事实表中的所有数据进行查询,将无效数据去除从而得到有效事实表,然后再将得到的有效事实表和维度表中的数据进行洗牌操作,从而将具有相同Join key的数据放进同一分区,再通过排序操作将不同分区按照Join key进行排序,最后进行关联操作将具有同一Join key的数据进行关联,其中,在进行关联操作时使用的方法可以是SortMergeJoin或CustomerFilterJoin,在此不做进一步限制,最后得到不同分区的关联数据。
其中,CustomFilterJoin主要有三个节点,分别为CustomFilterExec节点、Exchange节点以及CutomJoinExec节点,其中,CustomFilterExec节点基于较小表生成的过滤器匹配,在Exchange节点(分布式节点数据分发shuffle)之前就过滤掉大量无效数据,该阶段误判没有过滤的数据,留到后续CustomJoinExec节点处理;Exchange节点分别对两张表每个分区里的数据按照Join key进行排序,然后在此基础上进行归并排序;CutomJoinExec节点作用是查找匹配数据,主要流程在遍历事实表时对于每条记录,都采用顺序查找的方式从构建查找表中查找对应记录。由于排序的特性,每次处理完一条记录都需要从上次结束的位置继续查找,这种方式可以在任务执行前和执行中过滤大量无效数据,对性能的提升很有帮助。
可见,在本示例中,通过在洗牌操作前通过哈希函数构建高效过滤器提起去除事实表中大量无效数据,可以减少后续进行洗牌操作时的数据量,提高数据的关联效率。
在一种可能的实现方式中,根据所述维度表的数据量和所述事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,包括:
判断所述维度表的数据量与第一广播阈值的大小;若检测到所述维度表的数据量小于或等于所述第一广播阈值,使用BroadcastHashJoin作为目标数据关联策略;若检测到所述维度表的数据量大于所述第一广播阈值,根据所述维度表的数据量和所述事实表的数据量确定目标join策略。
其中,判断维度表的数据量是否超过广播阈值(spark.sql.autoBroadcastJoinThreshold),spark.sql.autoBroadcastJoinThreshold一般为10M,如果维度表的数据量不超过广播阈值,则维度表可以广播,服务器就会选择BroadcastHashJoin策略作为数据关联策略,因为BroadcastHashJoin算子不会引入数据洗牌、排序、合并等操作,往往性能表现优秀,因此对于满足BroadcastHashJoin的场景,保持Spark原生计算逻辑。
具体地,根据所述维度表的数据量和所述事实表的数据量确定目标数据关联策略,包括:
判断所述维度表的数据量与所述事实表的数据量的比值与第二广播阈值的大小;若检测到所述维度表的数据量与所述事实表的数据量的比值大于所述第二广播阈值,使用SortMergeJoin作为目标数据关联策略;若检测到所述维度表的数据量与所述事实表的数据量的比值小于或等于所述第二广播阈值,使用CustomFilterJoin作为目标数据关联策略。
其中,如果维度表的数据量超过广播阈值,则维度表的数据关联策略不能选择BroadcastHashJoin策略,会根据两张表数据大小和元数据信息对两个表的记录数和数据量进行评估,并基于两表的数据量信息进行代价评估,例如当较小表的数据量/大表数据量小于或等于第二广播阈值,即通过客户端设置的阈值(spark.sql.autoCustomJoinRatioThreshold)时,服务器会选择CustomFilterJoin策略会基于较小表构建过滤器,并作为Filter算子动态插入到大表的过滤条件中,上述操作会在大表shuffle前进行过滤,提起过滤大表侧关联时不会被命中的数据,从而减少整体任务数据传输量;当较小表的数据量/大表数据量大于第二广播阈值,即通过客户端设置的阈值(spark.sql.autoCustomJoinRatioThreshold)时,服务器使用SortMergeJoin作为目标数据关联策略。
可见,在本示例中,通过根据维度表和事实表的数据量动态选择后续进行数据关联时所采取的关联策略,可以满足在不同数据量和应用场景下的数据关联要求,提高数据关联的适配性和效率。
在一种可能的实现方式中,该方法还包括:
基于动态自适应执行机制获取所述数据的关联方法中每个步骤执行完成后返回数据的统计信息;对所述统计信息的直方图取值分布进行代价估算;根据所述代价估计的结果从多个预设的join策略中选择目标join策略。
其中,通过统计数据的直方图取值分布可以用于表示数据的分布情况,通过直方图取值分布还可以观察和估计哪些数据比较集中,异常或者孤立的数据分布在何处。
具体地,在数据关联的策略执行过程中,基于Spark Adaptive Execution动态自适应执行机制来实现动态CustomeFilterJoin优化规则。基本原理是作业的每个stage执行完成后,允许优化器根据采集到的stage结果信息重新调整后续的物理执行计划,根据静态stagestats数据信息判断Join的一端的数据大小是否可能适合构建过滤器,如果是,则Build构建端和stream流式遍历端的scan stage会依次串行提交执行;否则这两个stage将并行执行,当Build构建端的scan stage执行完成后,动态执行计划根据运行时收集的数据大小和Join的一端的数据列直方图取值分布进行代价估算,并决定最终的数据关联策略是选择BroadcastHashJoin、CustomFilterJoin还是原本的SortMergeJoin,其中,当物理执行计划为CustomFilterJoin,优化器会插入一个新的作业并行扫描构建端的数据来构建过滤器,并下推至stream流式遍历端的scan stage中。
可见,在本示例中,通过在数据关联过程中实时根据收集的stage结果信息重新调整后续的物理执行计划,即数据关联策略,可以实时选择合适的数据关联策略,提高数据关联效率。
请参阅图6,图6是本申请实施例提供的一种数据的关联装置的结构示意图,如图6所示,数据的关联装置600包括:
获取模块601,用于获取待关联的维度表和事实表,所述维度表和所述事实表中的每个数据都具有标识编号;
控制模块602,用于根据所述维度表的数据量和所述事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,所述多个预设的数据关联策略包括BroadcastHashJoin、SortMergeJoin以及CustomFilterJoin,所述CustomFilterJoin为本申请提出的一种新的数据关联策略;以及用于根据所述目标数据关联策略和所述标识编号对所述维度表和所述事实表中的数据进行关联。
在一种可能的实现方式中,控制模块602具体用于:通过预设的哈希函数和所述维度表构建数据过滤器;通过所述数据过滤器对所述事实表进行过滤得到有效事实表;通过对所述有效事实表和所述维度表进行洗牌操作得到第一分区数据,所述洗牌操作用于将所述有效事实表和所述维度表中具有相同的所述标识编号的数据放在同一分区;通过对所述第一分区数据进行排序操作得到第二分区数据,所述排序操作用于对所述第一分区数据按照所述标识编号进行排序;对所述第二分区数据进行关联操作,所述关联操作用于将所述第二分区数据中的维度表数据和事实表数据按照标识编号进行关联。
在一种可能的实现方式中,控制模块602具体用于:初始化一个包括m个均为0的元素的数组,m为正整数;初始化一个包括k个互相独立的哈希函数的哈希函数组,k为正整数;将根据所述哈希函数组获取的所述维度表中不同元素对应的哈希值作为关联索引值;通过将所述数组中元素序号等于所述关联索引值的值更新为1得到所述维度表的关联数组,所述关联数组为数据过滤器。
在一种可能的实现方式中,控制模块602具体用于:将根据所述哈希函数组获取的所述事实表中不同元素对应的哈希值作为查询索引值;判断所述数据过滤器中元素序号等于所述查询索引值的值是否等于1;若检测到所述数据过滤器中元素序号等于所述查询索引值的值等于1,则确定所述查询索引值对应的元素为有效数据;若检测到所述数据过滤器中元素序号等于所述查询索引值的值不等于1,则确定所述查询索引值对应的元素为无效数据;通过去除所述事实表中的无效数据得到有效事实表。
在一种可能的实现方式中,控制模块602具体用于:判断所述维度表的数据量与第一广播阈值的大小;若检测到所述维度表的数据量小于或等于所述第一广播阈值,使用BroadcastHashJoin作为目标数据关联策略;
若检测到所述维度表的数据量大于所述第一广播阈值,根据所述维度表的数据量和所述事实表的数据量确定目标数据关联策略。
在一种可能的实现方式中,控制模块602具体用于:判断所述维度表的数据量与所述事实表的数据量的比值与第二广播阈值的大小;
若检测到所述维度表的数据量与所述事实表的数据量的比值大于所述第二广播阈值,使用SortMergeJoin作为目标数据关联策略;若检测到所述维度表的数据量与所述事实表的数据量的比值小于或等于所述第二广播阈值,使用CustomFilterJoin作为目标数据关联策略。
在一种可能的实现方式中,控制模块602还用于:基于动态自适应执行机制获取所述数据的关联方法中每个步骤执行完成后返回数据的统计信息;对所述统计信息的直方图取值分布进行代价估算;根据所述代价估计的结果从多个预设的数据关联策略中选择目标数据关联策略。
值得指出的是,其中,数据的关联装置600的具体功能实现方式参见上述图2所示的数据的关联方法的描述,比如获取模块601用于实现执行S201的相关内容,控制模块602用于实现执行S202-S203的相关内容。数据的关联装置600中的各个单元或模块能够分别或全部合并为一个或若干个另外的单元或模块来构成,或者其中的某个(些)单元或模块还能够再拆分为功能上更小的多个单元或模块来构成,这能够实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元或模块是基于逻辑功能划分的,在实际应用中,一个单元(或模块)的功能由多个单元(或模块)来实现,或者多个单元(或模块)的功能由一个单元(或模块)实现。
基于上述方法实施例以及相关设备实施例的描述,请参阅图7,本发明实施例还提供的一种数据的关联装置700的结构示意图。图7所示的数据的关联装置700包括处理器701、存储器702、通信接口703以及总线704。其中,处理器701、存储器702、通信接口703通过总线704实现彼此之间的通信连接。
可选的,存储器702为ROM,静态存储设备,动态存储设备或者RAM。
存储器702能够存储程序,当存储器702中存储的程序被处理器701执行时,处理器701和通信接口703用于执行图2所示实施例的数据的关联方法的各个步骤。
处理器701采用通用的CPU,微处理器,应用专用集成电路ASIC,GPU或者一个或多个集成电路,用于执行相关程序,以执行本申请方法实施例的数据的关联方法。
处理器701还能够是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的数据的关联方法的各个步骤能够通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。可选的,处理器701是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。处理器能够实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器是微处理器或者该处理器是任何常规的处理器等。结合本申请实施例所公开的方法的步骤能够直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选的软件模块位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器或者本领域其他成熟的存储介质中。该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成本申请实施例的一种数据的关联装置600中包括的获取模块601和控制模块602所需执行的功能,或者执行本申请方法实施例的数据的关联方法。
通信接口703使用例如但不限于收发器一类的收发相关设备。
总线704可包括在数据的关联装置700各个部件(例如,存储器702、处理器701、通信接口703)之间传送信息的通路。
应注意,尽管图7所示的数据的关联装置700仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,数据的关联装置700还包括实现正常运行所必须的其他器件。同时,基于具体需要,本领域的技术人员应当理解数据的关联装置700还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,数据的关联装置700也可仅仅包括实现本申请实施例所必须的器件,而不必包括图7中所示的全部器件。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有用于电子数据交换的计算机程序,计算机程序包括执行指令,执行指令用于执行如上述数据的关联方法实施例中记载的任何一种数据的关联方法的部分或全部步骤,上述计算机包括电子终端设备。
本申请实施例提供了一种计算机程序产品,其中,计算机程序产品包括计算机程序,计算机程序可操作来使计算机如上述方法实施例中记载的任何一种数据的关联方法的部分或全部步骤,该计算机程序产品可以是一个软件安装包。
需要说明的是,对于前述的任一种数据的关联方法的实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请一种数据的关联方法及装置的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请一种数据的关联方法及装置的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
本申请是参照本申请实施例的方法、硬件产品和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现所公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
本领域普通技术人员可以理解上述任一种数据的关联方法的方法实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
可以理解的是,凡是被控制或者被配置以用于执行本申请一种数据的关联方法实施例所描述的流程图的处理方法的产品,如上述流程图的装置以及计算机程序产品,均属于本申请所描述的相关产品的范畴。
显然,本领域的技术人员可以对本申请提供的一种数据的关联方法及装置进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种数据的关联方法,其特征在于,应用于分布式计算引擎Spark的服务器,所述方法包括:
获取待关联的维度表和事实表,所述维度表和所述事实表中的每个数据都具有标识编号;
根据所述维度表的数据量和所述事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,所述多个预设的数据关联策略包括广播哈希连接策略、排序合并连接策略以及自定义过滤器连接策略;
根据所述目标数据关联策略和所述标识编号对所述维度表和所述事实表中的数据进行关联。
2.如权利要求1所述的方法,其特征在于,所述目标数据关联策略为所述自定义过滤器连接策略时,所述根据所述目标数据关联策略和所述标识编号对所述维度表和所述事实表中的数据进行关联,包括:
通过预设的哈希函数和所述维度表构建数据过滤器;
通过所述数据过滤器对所述事实表进行过滤得到有效事实表;
通过对所述有效事实表和所述维度表进行洗牌操作得到第一分区数据,所述洗牌操作用于将所述有效事实表和所述维度表中具有相同的所述标识编号的数据放在同一分区;
通过对所述第一分区数据进行排序操作得到第二分区数据,所述排序操作用于对所述第一分区数据按照所述标识编号进行排序;
对所述第二分区数据进行关联操作,所述关联操作用于将所述第二分区数据中的维度表数据和事实表数据按照标识编号进行关联。
3.如权利要求2所述的方法,其特征在于,所述通过预设的哈希函数和所述维度表构建数据过滤器,包括:
初始化一个包括m个均为0的元素的数组,m为正整数;
初始化一个包括k个互相独立的哈希函数的哈希函数组,k为正整数;
将根据所述哈希函数组获取的所述维度表中不同元素对应的哈希值作为关联索引值;
通过将所述数组中元素序号等于所述关联索引值的值更新为1得到所述维度表的关联数组,所述关联数组为数据过滤器。
4.如权利要求3所述的方法,其特征在于,所述通过所述数据过滤器对所述事实表进行过滤得到有效事实表,包括:
将根据所述哈希函数组获取的所述事实表中不同元素对应的哈希值作为查询索引值;
判断所述数据过滤器中元素序号等于所述查询索引值的值是否等于1;
若检测到所述数据过滤器中元素序号等于所述查询索引值的值等于1,则确定所述查询索引值对应的元素为有效数据;
若检测到所述数据过滤器中元素序号等于所述查询索引值的值不等于1,则确定所述查询索引值对应的元素为无效数据;
通过去除所述事实表中的无效数据得到有效事实表。
5.如权利要求4所述的方法,其特征在于,所述根据所述维度表的数据量和所述事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,包括:
判断所述维度表的数据量与第一广播阈值的大小;
若检测到所述维度表的数据量小于或等于所述第一广播阈值,使用广播哈希连接策略作为目标数据关联策略;
若检测到所述维度表的数据量大于所述第一广播阈值,根据所述维度表的数据量和所述事实表的数据量确定目标数据关联策略。
6.如权利要求5所述的方法,其特征在于,所述根据所述维度表的数据量和所述事实表的数据量确定目标数据关联策略,包括:
判断所述维度表的数据量与所述事实表的数据量的比值与第二广播阈值的大小;
若检测到所述维度表的数据量与所述事实表的数据量的比值大于所述第二广播阈值,使用排序合并连接策略作为目标数据关联策略;
若检测到所述维度表的数据量与所述事实表的数据量的比值小于或等于所述第二广播阈值,使用自定义过滤器连接策略作为目标数据关联策略。
7.如权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
基于动态自适应执行机制获取所述数据的关联方法中每个步骤执行完成后返回数据的统计信息;
对所述统计信息的直方图取值分布进行代价估算;
根据所述代价估计的结果从多个预设的数据关联策略中选择目标数据关联策略。
8.一种数据的关联装置,其特征在于,所述装置包括:
获取模块,用于获取待关联的维度表和事实表,所述维度表和所述事实表中的每个数据都具有标识编号;
控制模块,用于根据所述维度表的数据量和所述事实表的数据量从多个预设的数据关联策略中选择目标数据关联策略,所述多个预设的数据关联策略包括广播哈希连接策略、排序合并连接策略以及自定义过滤器连接策略;以及用于根据所述目标数据关联策略和所述标识编号对所述维度表和所述事实表中的数据进行关联。
9.一种数据的关联装置,其特征在于,所述装置包括:
存储器、处理器及存储在所述存储器上并可在所述处理器上运行的可执行程序代码,所述处理器执行所述可执行程序代码时执行如权利要求1-7任一项所述数据的关联方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有可执行程序代码,所述可执行程序代码包括执行指令,所述执行指令用于执行如权利要求1-7任一项所述数据的关联方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410068603.9A CN117807091A (zh) | 2024-01-17 | 2024-01-17 | 数据的关联方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410068603.9A CN117807091A (zh) | 2024-01-17 | 2024-01-17 | 数据的关联方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117807091A true CN117807091A (zh) | 2024-04-02 |
Family
ID=90434637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410068603.9A Pending CN117807091A (zh) | 2024-01-17 | 2024-01-17 | 数据的关联方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117807091A (zh) |
-
2024
- 2024-01-17 CN CN202410068603.9A patent/CN117807091A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391554B (zh) | 高效分布式局部敏感哈希方法 | |
US8537160B2 (en) | Generating distributed dataflow graphs | |
US9870382B2 (en) | Data encoding and corresponding data structure | |
CN107943952B (zh) | 一种基于Spark框架进行全文检索的实现方法 | |
US10565201B2 (en) | Query processing management in a database management system | |
CN106649503A (zh) | 一种基于sql的查询方法及系统 | |
US11281645B2 (en) | Data management system, data management method, and computer program product | |
CN108710662B (zh) | 语言转换方法和装置、存储介质、数据查询系统和方法 | |
US20110179013A1 (en) | Search Log Online Analytic Processing | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
CN111078705A (zh) | 基于Spark平台建立数据索引方法及数据查询方法 | |
CN113918605A (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
CN112182031B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN103823881B (zh) | 分布式数据库的性能优化的方法及装置 | |
US20160189026A1 (en) | Running Time Prediction Algorithm for WAND Queries | |
CN110442616B (zh) | 一种针对大数据量的页面访问路径分析方法与系统 | |
US20230153286A1 (en) | Method and system for hybrid query based on cloud analysis scene, and storage medium | |
US11709798B2 (en) | Hash suppression | |
CN113625967B (zh) | 数据存储方法、数据查询方法及服务器 | |
CN117807091A (zh) | 数据的关联方法及装置 | |
CN116957041A (zh) | 压缩神经网络模型的方法、装置和计算设备 | |
US11386155B2 (en) | Filter evaluation in a database system | |
CN111159213A (zh) | 一种数据查询方法、装置、系统和存储介质 | |
CN113505276A (zh) | 预计算模型的评分方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |