Document
拖动滑块完成拼图
首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

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

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:江苏大学

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

主权项:一种基于SDD‑1算法的Hive连接查询方法,其特征在于:包括以下步骤:1在各个分布节点上执行投影操作,将所有可执行的一元操作和局部操作构成执行策略集,对原始数据进行精简;2对上述的执行策略集进行归并排序预处理,将每一属性进行排序,使其各个属性形成一个有序的中间数据序列;3在Hadoop中对中间数据序列进行Map处理;4使用基于行和列的双半连接技术将Map阶段产生的结果传送到Reduce端;5在Reduce端处理来自Map端经过归并和排序的数据;6将查询处理的结果返回给客户端;所述步骤2中执行策略集进行归并排序预处理包括两个阶段:第一阶段是对数据库关系进行分段排序;第二阶段是对数据库关系的子表执行归并操作;第一阶段是对数据库关系进行分段排序,即首先将需要排序的数据库R划分为大小为M个块的子表,其中M是可用于排序的内存空间的个数,以块为单位,再将子表放入每个内存中采用快速排序的主存排序算法执行排序操作,这样就可以得到一个内部已排序的子表;第二阶段是对数据库关系的子表执行归并操作,即按照顺序从每个排序的子表中读取一个块的内容放入内存中,在内存中统一对这些块中的记录执行归并操作,每次选择最小最大的记录放入数据库R′中,同时删除子表中相应的记录;当子表在内存中的块被取空时,从子表中顺序读取一个新的块放入内存中继续执行归并操作;所述步骤4中使用基于行和列的双半连接技术进行数据传输的具体步骤如下:a确定连接查询涉及的属性行和列;b结合查询应用通过投影操作去除与连接查询无关行属性和列属性;c构造多种双半连接,分别计算传输代价,构建双半连接集;d从构建的双半连接集中选择出最小的传输代价将Map阶段产生的数据传输到Reduce端。

全文数据:一种基于SDD-1算法的Hive连接查询方法技术领域[0001]本发明属于计算机信息技术应用领域,具体涉及一种基于SDD-1算法的Hive连接查询方法。背景技术[0002]SDD-1算法是一种在传统分布式关系型数据库中广泛应用的查询方法。Hive是一个基于Hadoop文件系统之上的数据仓库架构,实现了类似传统关系数据库的SQL语句查询功能。现有Hive在进行连接查询时采用了排序归并算法,该算法的执行分为Map数据映射)阶段和Reduce数据处理阶段:Map阶段对执行连接的数据库表按照连接属性集中进行排序,Reduce阶段将各个Map阶段生成的分段排序结果进行归并连接,输出查询结果。[0003]上述算法存在两个问题:(lMap阶段产生的大量中间结果数据需要通过网络传输到Reduce端,会消耗大量的带宽;(2Reduce端需要进彳丁多次归并排序操作,执行时间较长。为了更好了使用Hive进行海量数据的连接查询,需要在实际应用中解决这两个问题。发明内容[0004]本发明的目的在于解决Hive在进行连接查询时采用Hive原始连接查询算法所存在的执行时间长和带宽资源消耗大等问题,提供了一种基于SDD-1算法的Hive连接查询方法,以使Hive系统达到响应快和带宽消耗少的目的。[0005]基于上述发明的目的,本发明的技术方案为:[0006]—种基于SDD-1算法的Hive连接查询方法,包括以下步骤:[0007]1在各个分布节点上执行投影等操作,将所有可执行的一元操作和局部操作构成执行策略集,对原始数据进行精简;[0008]2对上述的执行策略集进行归并排序预处理,将每一属性进行排序,使其各个属性形成一个有序的中间数据序列;[0009]3在Hadoop中对中间数据序列进行Map处理;[0010]4使用基于行和列的双半连接技术将Map阶段产生的结果传送到Reduce端;[0011]5在Reduce端处理来自Map端比较有序的数据;[0012]6将查询处理的结果返回给客户端。[0013]进一步,所述步骤2中执行策略集进行归并排序预处理包括两个阶段:第一阶段是对数据库关系进行分段排序;第二阶段是对数据库关系的子表执行归并操作。[0014]进一步,所述归并排序预处理需要进行多次的本地数据的读取、归并和排序操作。[0015]进一步,所述步骤4中使用基于行和列的双半连接技术进行数据传输的具体步骤如下:[0016]a确定连接查询涉及的属性行和列;[0017]b结合查询应用通过投影操作去除与连接查询无关行属性和列属性;[0018]c构造多种双半连接,分别计算传输代价,构建双半连接集;[0019]d从构建的双半连接集中选择出最小的传输代价将Map阶段产生的数据传输到Reduce^〇[0020]进一步,还包括测试数据验证环节,选取相应的测试数据,就CPU代价以及时间响应同Hive原始连接查询算法作对比。[0021]本发明的有益结果为:本发明充分利用Hive进行数据连接查询时需进行的数据传输和归并排序操作的特性,采用双半连接技术和数据归并排序预处理技术,进而加快查询处理速度。实验结果表明,本发明采用双半连接技术能够大大减少各个节点之间的数据传输量,从而大大减少对带宽资源的消耗;同时采用数据归并排序预处理,可以当元组数达到一定规模后使响应速度加快。附图说明[0022]图1为本发明的执行步骤流程图;[0023]图2为Hive原始连接查询算法CPU代价的示意图;[0024]图3为基于SDD-1算法的Hive连接查询方法的CPU代价的示意图;[0025]图4为本发明在不同数据量下与Hive原始连接查询算法的时间响应对比图。具体实施方式[0026]下面结合附图和具体实施例,进一步阐明本发明的具体实施方式。[0027]如图1所示,本发明提出了一种基于数据预处理和双半连接的SDD-1改进算法,数据预处理是指在进行数据传输前用投影等一元操作完成对数据的精简,同时还对各节点上进行数据的预排序;双半连接是指不仅对行的数据进行缩减,同时对列的数据进行缩减。该方案包括以下几个步骤:[0028]步骤1,在各个分布节点上执行投影等操作,将所有可执行的一元操作和局部操作构成执行策略集,对原始数据进行精简;[0029]步骤2,对上述的执行策略集进行归并排序预处理,将每一属性进行排序,使其各个属性形成一个有序的中间数据序列;[0030]步骤3,在Hadoop中对中间数据序列进行Map处理;[0031]步骤4,使用基于行和列的双半连接技术将Map阶段产生的结果传送到Reduce端;[0032]步骤5,在Reduce端处理来自Map端比较有序的数据;[0033]步骤6,将查询处理的结果返回给客户端。[0034]上述步骤2中归并排序预处理主要包括两个阶段:[0035]第一阶段是对数据库关系进行分段排序,即首先将需要排序的数据库R划分为大小为M个块的子表,其中M是可用于排序的内存空间的个数,以块为单位,再将子表放入每个内存中采用快速排序等主存排序算法执行排序操作,这样就可以得到一个内部已排序的子表;[0036]第二阶段是对数据库关系的子表执行归并操作,g卩按照顺序从每个排序的子表中读取一个块的内容放入内存中,在内存中统一对这些块中的记录执行归并操作,每次选择取小取大)的记录放入数据库R中,冋时删除子表中相应的记录;当子表在内存中的块被取空时,从子表中顺序读取一个新的块放入内存中继续执行归并操作。[0037]步骤4中采用基于行和列的双半连接技术进行数据传输的详细执行步骤如下:[0038]a确定连接查询涉及的属性行和列;[0039]b结合查询应用通过投影操作去除与连接查询无关行属性和列属性;[0040]c构造多种双半连接,分别计算传输代价,构建双半连接集;[0041]d从构建的双半连接集中选择出最小的传输代价将Map阶段产生的数据传输到Reduce端。[0042]如图2和图3所示,在linux系统中对元组数3000的数据库进行测试(使用命令vmstat3,每隔三秒采集一次CPU使用情况数据),可以看出基于SDD-1算法的Hive连接查询改进方法在数据传输时以本地化处理时间来换取在不同站点之间的传输时间,与Hive原始连接查询算法相比,其中cs、us和sy参数值较大,反映出改进算法需要有较高的CPU使用率及IO读取次数,因为改进算法在进行数据预处理时,需要进行多次的本地数据的读取、归并和排序操作,消耗了大量的系统资源。[0043]如图4所示,在搭建的Hadoop集群中对元组数从1000-8000的数据库进行测试。测试表明,在元组数比较少的时候,基于SDD-1算法的Hive连接查询方法由于各节点进行归并排序需要的时间大于缩减数据和加快Reduce端的处理时间,所以查询响应时间相比Hive原始连接查询算法反而增加;但随着元组数的增加,改进算法的优越性开始显现。量化来说,当总元组数达到8〇〇〇时,改进算法的响应时间开始少于Hive原始连接查询算法;而且随着元组数的进一步增加,响应时间的提升幅度也随之加大。[0044]基于Hive的连接查询算法原本只是在集群中节点上完成对所有数据的Map操作之后就直接进行Reduce操作,从而将查询的结果返回给用户。本发明对其进行了改进,大大减少在不同节点之间的数据传输量,减少带宽的使用;同时引入预归并排序预处理操作,使进行Reduce操作时有一个比较有序的属性列,从而减少Reduce端归并排序的时间,提高查询的效率。[0045]应理解上述施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

权利要求:1.一种基于SDD-1算法的Hive连接查询方法,其特征在于:包括以下步骤: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.根据权利要求1所述的基于SDD-1算法的Hive连接查询方法,其特征在于:所述归并排序预处理需要进行多次的本地数据的读取、归并和排序操作。3.根据权利要求1所述的基于SDD-1算法的Hive连接查询方法,其特征在于:还包括测试数据验证环节,选取相应的测试数据,就CPU代价以及时间响应同Hive原始连接查询算法作对比。

百度查询: 江苏大学 一种基于SDD‑1算法的Hive连接查询方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。