[发明专利]一种数据处理方法及系统有效
申请号: | 201110160630.1 | 申请日: | 2011-06-15 |
公开(公告)号: | CN102831120B | 公开(公告)日: | 2017-07-21 |
发明(设计)人: | 张书彬;赵彦荣;郭玮;李均;赵伟;洪坤乾;徐钊 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙)44285 | 代理人: | 王仲凯 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据处理 方法 系统 | ||
技术领域
本发明涉及一种数据处理方法及系统。
背景技术
对于基于Map/Reduce(映射/化简)框架对SQL(Structured Query Language,结构化查询语言)查询进行处理和计算的数据处理系统来说,数据存储任务由分布式文件系统完成。在Map/Reduce框架中,针对客户端提交的数据处理任务,可以首先将该数据处理任务拆分成若干个Map任务,分配到不同的机器上执行,每一个Map任务将查询输入文件的一部分作为自己的输入,并通过计算生成中间文件;与此同时,系统会生成若干个Reduce任务,并分配到不同的机器上执行,从而将Map任务生成的中间文件拉取到相应的Reduce任务本地进行计算处理后,汇总到最终的输出文件中去。
在该种数据处理系统处理的SQL查询中,Join(连接)查询和Groupby(分组)查询占较多的比重。在进行Join查询时,通常需要使用一个完整的Map/Reduce作业来完成。具体地,在Map阶段,各个Map任务分别读取参与Join计算的两个(或多个)数据表的部分数据,并将读取到的数据按照要连接的key(键)分别转发到相应的Reduce任务上去;在Reduce阶段,Reduce任务在获取Map任务转发的键值对后,根据键值对所属的数据表进行分类并按key进行排序,生成与上述两个数据表分别对应的两个键值对的有序列表,并对两个有序列表进行连接操作。
在对数据表进行Groupby操作时,Map/Reduce框架需要通过Map任务从数据表中读取数据,并根据Groupby键将读取到的数据分发到Reduce任务,Groupby键相同的键值对映射到同一个Reduce任务,从而在Reduce任务中对排好序的键值对执行Groupby操作。
此外,为了方便、快速地读取数据表中用户查询涉及到的列,有些该种数据处理系统支持对数据表中的数据的按列存储,因此,对于同一个数据表中的数据而言,即使位于同一行,也可能因为属于不同列而位于不同的文件中,从而被分布式文件系统保存到不同的节点上。因此,对采用列存储的数据表进行查询时,可能需要从多个节点读取数据,进行查询和最后结果的整合。
现有技术存在以下不足:
现有技术在进行Join查询和Groupby查询时开销比较大,以及查询按列存储的数据表时开销较大。
发明内容
本发明所解决的技术问题在于提供了一种数据处理方法及系统,用以减小Join查询和Groupby查询的开销,以及对列存储数据表的查询开销,提高数据处理系统的计算效率。
本发明实施例中提供了一种数据处理方法,包括如下步骤:
在基于映射/化简Map/Reduce框架完成对查询的处理和计算的数据处理中,将数据表定义为采用哈希Hash分区的方式,并在Hash分区中存储数据;
在确定所需执行的查询为连接查询或分组查询,且源数据表为Hash分区数据表、连接键或分组键为分区列时,将该查询修改为在Map端以Hash分区为单位的连接查询或分组查询后执行查询。
本发明实施例中提供了一种数据处理系统,包括:
存储引擎,用于在基于Map/Reduce框架完成对查询的处理和计算的数据处理中,将数据表定义为采用哈希Hash分区的方式,并在Hash分区中存储数据;
查询引擎,用于在确定所需执行的查询为连接查询或分组查询,且源数据表为Hash分区数据表、连接键或分组键为分区列时,将该查询修改为在Map端以Hash分区为单位的连接查询或分组查询后执行查询。
本发明有益效果如下:
在本发明实施例提供的技术方案中,在基于Map/Reduce框架完成对SQL查询的处理和计算,数据存储任务由分布式文件系统完成的数据处理中,将数据表定义为采用Hash分区的方式,并在Hash分区中存储数据;在确定所需执行的查询为Join查询或Groupby查询,且源数据表为Hash分区数据表、连接键或分组键为分区列时,将该查询修改为在Map端以Hash分区为单位的Join查询或Grouby查询后执行查询。本方案中,为分布式数据仓库增加Hash分区的分区方式,将数据按照Hash分区键映射到不同的Hash分区保存,由于键相等的数据均已被映射到同一个Hash分区中,因此,对于Join查询和Groupby查询而言,可以将Hash分区作为Map任务的划分依据,每个Hash分区由一个Map任务处理,在Map端完成数据的处理操作,从而达到节约网络带宽、磁盘带宽和网络资源,提高计算效率的目的。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110160630.1/2.html,转载请声明来源钻瓜专利网。