一种Spark Broadcasthashjoin操作的改进方法技术

技术编号:16216561 阅读:25 留言:0更新日期:2017-09-15 22:45
本发明专利技术公开了一种Spark Broadcasthashjoin操作的改进方法,该方法包括:获取小表,并获取小表中key值被大表查找的先验概率;依据先验概率对小表中的key从大到小进行排序,得到一个新的有序表;利用所述新的有序表构建哈希表,将哈希表广播到各个节点;在各个节点获取大表内容,将大表内容与哈希表中的匹配项进行连接。该方法实现提高查找效率,进而提高join的连接效率。

An improved method of Spark Broadcasthashjoin operation

The invention discloses a method for improving Spark Broadcasthashjoin operation, the method includes obtaining a small table, and to obtain a small table key value is large prior probability table lookup; based on the prior probability on the small table in key from large to small order, get a new order using the table; the new order table of the hash table, the hash table is broadcast to each node; to obtain large table content in each node, the contents and the hash table match in connection. The method improves the searching efficiency and improves the connection efficiency of join.

【技术实现步骤摘要】
一种SparkBroadcasthashjoin操作的改进方法
本专利技术涉及Spark大数据处理
,特别是涉及一种SparkBroadcasthashjoin操作的改进方法。
技术介绍
目前,Spark是近年来发展较快的分布式并行大数据处理框架,SparkSQL提供了对结构化数据的处理。Broadcasthashjoin是SparkSQL中的一项重要操作,用于处理多表连接。Broadcasthashjoin是对join操作的优化处理。在SparkSQL中Broadcasthashjoin首先使用broadcast把小表分发到每台执行节点上,然后利用小表中的key数据计算hash值建立哈希表,最后计算大表对应的hash值,在hash表中进行查找最终完成表的连接。Broadcasthashjoin操作过程中需要利用小表来创建哈希表,创建哈希表的过程中不可避免的要解决相同key的冲突问题,Broadcasthashjoin操作中用链地址法来解决冲突。然而这种方法再处理冲突时,往往不会考虑小表中数据被大表查找的先验概率大小。例如,小表中key值a位于key值b之前,二者对应的哈希值相同,在创建哈希表时利用链地址法处理冲突会将b链接在a之后,而实际先验已知在大表中进行查找连接操作时,查找b的频率远远高于a,那么此时查找效率将会非常低下,尤其是在处理大批相同哈希值的情况下。在Spark集群中直接join将会对所有数据进行shuffle,需要大量的io操作,相同的key会在同一个partition中进行处理,任务的并发度也受到了限制。Broadcasthashjoin通过使用broadcast把小表分发到每台执行节点上,从而使得关联操作都在本地完成,基本就取消了shuffle的过程,运行效率大幅度提高。然而该操作同时也涉及到哈希表的创建和查找过程,以及哈希表创建过程中的冲突解决问题。Broadcasthashjoin利用链地址法来解决冲突。然而这种方法处理冲突时只是在每次遇到冲突时将对应数据依次挂接在相同hash值对应的链表里,并未考虑到小表中数据被大表查找的先验概率大小,也即大表中与小表中相同字段的概率大小,从而造成了后续大表join操作时查找连接效率较低。
技术实现思路
本专利技术的目的是提供一种SparkBroadcasthashjoin操作的改进方法,以实现提高查找效率,进而提高join的连接效率。为解决上述技术问题,本专利技术提供一种SparkBroadcasthashjoin操作的改进方法,该方法包括:获取小表,并获取小表中key值被大表查找的先验概率;依据先验概率对小表中的key从大到小进行排序,得到一个新的有序表;利用所述新的有序表构建哈希表,将哈希表广播到各个节点;在各个节点获取大表内容,将大表内容与哈希表中的匹配项进行连接。优选的,小表中的每个key均对应一个先验概率。优选的,所述利用所述新的有序表构建哈希表,包括:逐行计算小表中每行key的哈希值,将具有相同哈希值的key对应的关键字都依次放在同一个链表中,构成哈希表。优选的,所述哈希值为关键字的哈希地址。优选的,所述将具有相同哈希值的key对应的关键字都依次放在同一个链表中,构成哈希表之后,还包括:采用数组存放各个链表的头指针。优选的,链表的数目和哈希地址的数目相同。优选的,所述将大表内容与哈希表中的匹配项进行连接,包括:计算大表中各行key的哈希值,在哈希表中查找哈希值相同的匹配项,将大表内容与匹配项进行连接。本专利技术所提供的一种SparkBroadcasthashjoin操作的改进方法,获取小表,并获取小表中key值被大表查找的先验概率;依据先验概率对小表中的key从大到小进行排序,得到一个新的有序表;利用所述新的有序表构建哈希表,将哈希表广播到各个节点;在各个节点获取大表内容,将大表内容与哈希表中的匹配项进行连接。可见,该方法改进了Broadcasthashjoin操作,增加了小表中key值被大表查找的先验概率,小表中每个key均对应一个先验被查找概率,在利用小表数据构建哈希表时首先按照该先验概率对key从小到大进行排序,排序后得到一个新的有序表,然后再对新的有序表进行常规的哈希表构建过程。由于用于构建哈希表的小表中每个key被查找的概率不同,按被查找的先验概率大小来决定其冲突处理时的位置,将出现概率大的放在所需比较次数少的位置,从而减少后续大表查找连接操作时的查找次数,提高查找效率,提高Broadcasthashjoin的整体性能。并且将小表中数据元素被大表查找的先验概率作为建立哈希表时插入顺序的依据,使得查找连接过程与原操作相比在不增加过多其它消耗的同时降低了冲突时执行查询的查找长度,从而使查询响应时间更短,进而join的连接效率更高,提高join的连接效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术所提供的一种SparkBroadcasthashjoin操作的改进方法的流程图;图2为现有技术中的SparkBroadcasthashjoin实现流程图;图3为本专利技术改进的SparkBroadcasthashjoin实现流程图;图4为改进前后哈希表示意图。具体实施方式本专利技术的核心是提供一种SparkBroadcasthashjoin操作的改进方法,以实现提高查找效率,进而提高join的连接效率。为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参考图1,图1为本专利技术所提供的一种SparkBroadcasthashjoin操作的改进方法的流程图,该方法包括:S11:获取小表,并获取小表中key值被大表查找的先验概率;S12:依据先验概率对小表中的key从大到小进行排序,得到一个新的有序表;S13:利用所述新的有序表构建哈希表,将哈希表广播到各个节点;S14:在各个节点获取大表内容,将大表内容与哈希表中的匹配项进行连接。可见,该方法改进了Broadcasthashjoin操作,增加了小表中key值被大表查找的先验概率,小表中每个key均对应一个先验被查找概率,在利用小表数据构建哈希表时首先按照该先验概率对key从小到大进行排序,排序后得到一个新的有序表,然后再对新的有序表进行常规的哈希表构建过程。由于用于构建哈希表的小表中每个key被查找的概率不同,按被查找的先验概率大小来决定其冲突处理时的位置,将出现概率大的放在所需比较次数少的位置,从而减少后续大表查找连接操作时的查找次数,提高查找效率,提高Broadcasthashjoin的整体性能。并且将小表中数据元素被大表查找的先验概率作为建立哈希表时插入顺序的依据,使得查找连接过程与原操作相比在不增加过多其它消耗本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201710339062.html" title="一种Spark Broadcasthashjoin操作的改进方法原文来自X技术">Spark Broadcasthashjoin操作的改进方法</a>

【技术保护点】
一种Spark Broadcasthashjoin操作的改进方法,其特征在于,包括:获取小表,并获取小表中key值被大表查找的先验概率;依据先验概率对小表中的key从大到小进行排序,得到一个新的有序表;利用所述新的有序表构建哈希表,将哈希表广播到各个节点;在各个节点获取大表内容,将大表内容与哈希表中的匹配项进行连接。

【技术特征摘要】
1.一种SparkBroadcasthashjoin操作的改进方法,其特征在于,包括:获取小表,并获取小表中key值被大表查找的先验概率;依据先验概率对小表中的key从大到小进行排序,得到一个新的有序表;利用所述新的有序表构建哈希表,将哈希表广播到各个节点;在各个节点获取大表内容,将大表内容与哈希表中的匹配项进行连接。2.如权利要求1所述的方法,其特征在于,小表中的每个key均对应一个先验概率。3.如权利要求2所述的方法,其特征在于,所述利用所述新的有序表构建哈希表,包括:逐行计算小表中每行key的哈希值,将具有相同哈希值的k...

【专利技术属性】
技术研发人员:曹芳
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1