当前位置: 首页 > 专利查询>江苏大学专利>正文

一种基于SDD‑1算法的Hive连接查询方法技术

技术编号:10388510 阅读:204 留言:0更新日期:2014-09-05 13:43
本发明专利技术公开了一种基于SDD‑1算法的Hive连接查询方法,采用数据预处理和双半连接两种技术来实现,数据预处理阶段进行数据传输前用投影等一元操作完成对数据的精简,同时还对各节点上进行数据的预排序;双半连接技术是指不仅对行的数据进行缩减,同时对列的数据进行缩减。结果表明,本发明专利技术采用双半连接技术能够大大减少各个节点之间的数据传输量,从而大大减少对带宽资源的消耗;同时采用数据归并排序预处理,可以当元组数达到一定规模后使响应速度加快。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了,采用数据预处理和双半连接两种技术来实现,数据预处理阶段进行数据传输前用投影等一元操作完成对数据的精简,同时还对各节点上进行数据的预排序;双半连接技术是指不仅对行的数据进行缩减,同时对列的数据进行缩减。结果表明,本专利技术采用双半连接技术能够大大减少各个节点之间的数据传输量,从而大大减少对带宽资源的消耗;同时采用数据归并排序预处理,可以当元组数达到一定规模后使响应速度加快。【专利说明】—种基于SDD-1算法的Hive连接查询方法
本专利技术属于计算机信息技术应用领域,具体涉及。
技术介绍
SDD-1算法是一种在传统分布式关系型数据库中广泛应用的查询方法。Hive是一个基于Hadoop文件系统之上的数据仓库架构,实现了类似传统关系数据库的SQL语句查询功能。现有Hive在进行连接查询时采用了排序归并算法,该算法的执行分为Map (数据映射)阶段和Reduce (数据处理)阶段:Map阶段对执行连接的数据库表按照连接属性集中进行排序,Reduce阶段将各个Map阶段生成的分段排序结果进行归并连接,输出查询结果。上述算法存在两个问题=(I)Map阶段产生的大量中间结果数据需要通过网络传输到Reduce端,会消耗大量的带宽;(2)Reduce端需要进行多次归并排序操作,执行时间较长。为了更好了使用Hive进行海量数据的连接查询,需要在实际应用中解决这两个问题。
技术实现思路
本专利技术的目的在于解决Hive在进行连接查询时采用Hive原始连接查询算法所存在的执行时间长和带宽资源消耗大等问题,提供了,以使Hive系统达到响应快和带宽消耗少的目的。基于上述专利技术的目的,本专利技术的技术方案为: ,包括以下步骤: 1)在各个分布节点上执行投影等操作,将所有可执行的一元操作和局部操作构成执行策略集,对原始数据进行精简; 2)对上述的执行策略集进行归并排序预处理,将每一属性进行排序,使其各个属性形成一个有序的中间数据序列; 3)在Hadoop中对中间数据序列进行Map处理; 4)使用基于行和列的双半连接技术将Map阶段产生的结果传送到Reduce端; 5)在Reduce端处理来自Map端比较有序的数据; 6)将查询处理的结果返回给客户端。进一步,所述步骤2)中执行策略集进行归并排序预处理包括两个阶段:第一阶段是对数据库关系进行分段排序;第二阶段是对数据库关系的子表执行归并操作。进一步,所述归并排序预处理需要进行多次的本地数据的读取、归并和排序操作。进一步,所述步骤4)中使用基于行和列的双半连接技术进行数据传输的具体步骤如下: a)确定连接查询涉及的属性行和列; b)结合查询应用通过投影操作去除与连接查询无关行属性和列属性; c)构造多种双半连接,分别计算传输代价,构建双半连接集; d )从构建的双半连接集中选择出最小的传输代价将Map阶段产生的数据传输到Reduce 端。进一步,还包括测试数据验证环节,选取相应的测试数据,就CPU代价以及时间响应同Hive原始连接查询算法作对比。本专利技术的有益结果为:本专利技术充分利用Hive进行数据连接查询时需进行的数据传输和归并排序操作的特性,采用双半连接技术和数据归并排序预处理技术,进而加快查询处理速度。实验结果表明,本专利技术采用双半连接技术能够大大减少各个节点之间的数据传输量,从而大大减少对带宽资源的消耗;同时采用数据归并排序预处理,可以当元组数达到一定规模后使响应速度加快。【专利附图】【附图说明】图1为本专利技术的执行步骤流程图; 图2为Hive原始连接查询算法CPU代价的示意图; 图3为基于SDD-1算法的Hive连接查询方法的CPU代价的示意图; 图4为本专利技术在不同数据量下与Hive原始连接查询算法的时间响应对比图。【具体实施方式】下面结合附图和具体实施例,进一步阐明本专利技术的【具体实施方式】。如图1所示,本专利技术提出了一种基于数据预处理和双半连接的SDD-1改进算法,数据预处理是指在进行数据传输前用投影等一元操作完成对数据的精简,同时还对各节点上进行数据的预排序;双半连接是指不仅对行的数据进行缩减,同时对列的数据进行缩减。该方案包括以下几个步骤: 步骤1,在各个分布节点上执行投影等操作,将所有可执行的一元操作和局部操作构成执行策略集,对原始数据进行精简; 步骤2,对上述的执行策略集进行归并排序预处理,将每一属性进行排序,使其各个属性形成一个有序的中间数据序列; 步骤3,在Hadoop中对中间数据序列进行Map处理; 步骤4,使用基于行和列的双半连接技术将Map阶段产生的结果传送到Reduce端; 步骤5,在Reduce端处理来自Map端比较有序的数据; 步骤6,将查询处理的结果返回给客户端。上述步骤2中归并排序预处理主要包括两个阶段: 第一阶段是对数据库关系进行分段排序,即首先将需要排序的数据库R划分为大小为M个块的子表,其中M是可用于排序的内存空间的个数,以块为单位,再将子表放入每个内存中采用快速排序等主存排序算法执行排序操作,这样就可以得到一个内部已排序的子表; 第二阶段是对数据库关系的子表执行归并操作,即按照顺序从每个排序的子表中读取一个块的内容放入内存中,在内存中统一对这些块中的记录执行归并操作,每次选择最小(最大)的记录放入数据库V中,同时删除子表中相应的记录;当子表在内存中的块被取空时,从子表中顺序读取一个新的块放入内存中继续执行归并操作。步骤4中采用基于行和列的双半连接技术进行数据传输的详细执行步骤如下: a)确定连接查询涉及的属性行和列; b)结合查询应用通过投影操作去除与连接查询无关行属性和列属性; c)构造多种双半连接,分别计算传输代价,构建双半连接集; d )从构建的双半连接集中选择出最小的传输代价将Map阶段产生的数据传输到Reduce 端。如图2和图3所示,在Iinux系统中对元组数3000的数据库进行测试(使用命令vmstat 3,每隔三秒采集一次CPU使用情况数据),可以看出基于SDD-1算法的Hive连接查询改进方法在数据传输时以本地化处理时间来换取在不同站点之间的传输时间,与Hive原始连接查询算法相比,其中cs、us和sy参数值较大,反映出改进算法需要有较高的CPU使用率及I/O读取次数,因为改进算法在进行数据预处理时,需要进行多次的本地数据的读取、归并和排序操作,消耗了大量的系统资源。如图4所示,在搭建的Hadoop集群中对元组数从1000-8000的数据库进行测试。测试表明,在元组数比较少的时候,基于SDD-1算法的Hive连接查询方法由于各节点进行归并排序需要的时间大于缩减数据和加快Reduce端的处理时间,所以查询响应时间相比Hive原始连接查询算法反而增加;但随着元组数的增加,改进算法的优越性开始显现。量化来说,当总元组数达到8000时,改进算法的响应时间开始少于Hive原始连接查询算法;而且随着元组数的进一步增加,响应时间的提升幅度也随之加大。基于Hive的连接查询算法原本只是在集群中节点上完成对所有数据的Map操作之后就直接进行Reduce操作,从而将查询的结果返回给用户。本专利技术对其进行了改进,大大减少在不同节点之间的数据传输量,减少带宽的使用;同时引入预归本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201410237997.html" title="一种基于SDD‑1算法的Hive连接查询方法原文来自X技术">基于SDD‑1算法的Hive连接查询方法</a>

【技术保护点】
一种基于SDD‑1算法的Hive连接查询方法,其特征在于:包括以下步骤:1)在各个分布节点上执行投影等操作,将所有可执行的一元操作和局部操作构成执行策略集,对原始数据进行精简;2)对上述的执行策略集进行归并排序预处理,将每一属性进行排序,使其各个属性形成一个有序的中间数据序列; 3)在Hadoop中对中间数据序列进行Map处理;4)使用基于行和列的双半连接技术将Map阶段产生的结果传送到Reduce端;5)在Reduce端处理来自Map端比较有序的数据;6)将查询处理的结果返回给客户端。

【技术特征摘要】

【专利技术属性】
技术研发人员:周莲英吴淑跃郭远郑吉喻志浩
申请(专利权)人:江苏大学
类型:发明
国别省市:江苏;32

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

1