一种数据表关联方法和装置制造方法及图纸

技术编号:15690915 阅读:53 留言:0更新日期:2017-06-24 03:41
本发明专利技术提供一种数据表关联方法和装置,其中方法应用于对第一数据表和第二数据表进行关联;其中,所述第一数据表中包括:能够造成数据倾斜的倾斜数据以及所述倾斜数据之外的非倾斜数据,该方法包括:由第一数据表中提取倾斜数据放入第一数据分表,并将非倾斜数据放入第二数据分表;由第二数据表中提取匹配关联第一数据分表的数据,放入第三数据分表;将第一数据分表和第三数据分表进行mapjoin得到第一关联表,将第二数据分表和第二数据表进行关联,得到第二关联表;将第一关联表和第二关联表进行组合,得到关联结果表,关联结果表为第一数据表和第二数据表关联的结果。本发明专利技术提高了数据表关联的效率。

Data table association method and device

The present invention provides a table of data association method and device, the method is applied to the association of the first data table and data table second; among them, the first data table includes: can cause non tilt data beyond the tilt data data skew and the tilt data, the method comprises: a first data table extraction of tilt data into a first data table, and non tilt data into second data table; extracted by second data tables, first data table data into third data tables; the first data table and third data table mapjoin first association table, second tables and data points table second data association, second association table; the first association table and second association table are combined, the association results are obtained in table, table of results for the first data association The result of the table associated with the second data table. The invention improves the efficiency of the data table association.

【技术实现步骤摘要】
一种数据表关联方法和装置
本专利技术涉及数据处理技术,特别涉及一种数据表关联方法和装置。
技术介绍
在数据仓库进行数据清洗时,其中一种常用的清洗方式是数据表和数据表之间的关联,这种数据仓库中的数据表之间的关联可以称为join操作。参与join的数据表中通常具有相同的关联键(数据表之间关联时使用的连接字段),如果将关联键称为key,例如,其中一个数据表中存储该key与信息A的对应关系,另一个数据表中存储该Key与信息B的对应关系,在两者join时,可以根据关联键key,将对应相同key的信息A和信息B组合在一张新数据表中,该新数据表可以包含该key与对应的信息A、信息B。在join的过程中经常出现的一种情况是数据倾斜,数据倾斜即:参与join的数据表中,其中一个数据表包含大量的相同key值的数据记录,例如,某个用户登陆信息数据表中,记载有用户ID“123”这个用户分别在不同时间进行登陆的百万或千万条数据记录(例如,其中一条记录是“用户ID123——登陆时间2016.3.21”)。那么在数据仓库使用的分布式计算平台上处理该数据表与其他数据表的join操作时,通常计算时间会较长。
技术实现思路
有鉴于此,本专利技术提供一种数据表关联方法和装置,以在存在数据倾斜的数据表之间关联时,提高数据表关联的效率。具体地,本专利技术是通过如下技术方案实现的:第一方面,提供一种数据表关联方法,该方法应用于对第一数据表和第二数据表进行关联;其中,所述第一数据表中包括:能够造成数据倾斜的倾斜数据以及所述倾斜数据之外的非倾斜数据,所述方法包括:由所述第一数据表中提取所述倾斜数据放入第一数据分表,并将所述非倾斜数据放入第二数据分表;由所述第二数据表中提取匹配关联所述第一数据分表的数据,放入第三数据分表;将所述第一数据分表和第三数据分表进行mapjoin得到第一关联表,将所述第二数据分表和所述第二数据表进行关联,得到第二关联表;将所述第一关联表和第二关联表进行组合,得到关联结果表,所述关联结果表为所述第一数据表和第二数据表关联的结果。第二方面,提供一种数据表关联装置,所述装置应用于对第一数据表和第二数据表进行关联;其中,所述第一数据表中包括:能够造成数据倾斜的倾斜数据以及所述倾斜数据之外的非倾斜数据,所述装置包括:表拆分单元,用于由所述第一数据表中提取所述倾斜数据放入第一数据分表,并将所述非倾斜数据放入第二数据分表;表提取单元,用于由所述第二数据表中提取匹配关联所述第一数据分表的数据,放入第三数据分表;表关联单元,用于将所述第一数据分表和第三数据分表进行mapjoin得到第一关联表,将所述第二数据分表和所述第二数据表进行关联,得到第二关联表;表组合单元,用于将所述第一关联表和第二关联表进行组合,得到关联结果表,所述关联结果表为所述第一数据表和第二数据表关联的结果。本专利技术实施例的数据表关联方法和装置,通过将包含倾斜数据的数据表进行拆分,将拆分后的倾斜数据与一小表进行mapjoin,并将剩余数据与另一表join,使得这两部分的数据表关联都不会受到倾斜数据的影响,提高了数据表关联的效率。附图说明图1为本专利技术实施例提供的数据表关联方法的流程图;图2为本专利技术实施例提供的数据表关联方法的原理示意图;图3为本专利技术实施例提供的数据表关联装置的结构示意图;图4为本专利技术实施例提供的数据表关联装置的结构示意图;图5为本专利技术实施例提供的数据表关联装置所在的处理设备的一种硬件结构图。具体实施方式数据仓库主要是为决策分析提供数据,所涉及的数据操作主要是数据查询,并且为了保证数据仓库提供数据的准确性,进入仓库的数据通常要经过数据清洗。数据表关联是数据仓库进行数据清洗时的一种常用方法,例如,在通过map/reduce分布式计算平台进行数据处理时,reduce阶段可以根据两个或更多的数据表中的关联键对这些表执行join(也称笛卡尔乘积),比如,数据仓库接收到一个数据查询请求,请求查询获取对应某个key的信息A和信息B,而信息A和信息B分别位于两个数据表中,那么可以根据Key对这两个数据表进行关联,得到一个包含key及对应的信息A和信息B的新数据表,返回给查询者。例如,reduce节点可以获取key相同的来自两个数据表的valuelist(表中可以是key与value的对应关系,比如,key是用户ID,value是该用户的登陆时间),对于同一个key,对这两个数据表中的数据进行join处理。当数据倾斜时,由于某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,迟迟运行不完,也使得整个数据表关联的处理时间延长。本申请实施例的数据表关联方法,旨在对存在数据倾斜问题的数据表进行关联时,提高数据表关联的效率,降低数据倾斜对关联处理时间的影响。图1示例了该数据表关联方法的流程,该方法可以由分布式计算平台执行。在如下图1所示的例子中,以对第一数据表和第二数据表进行关联join为例来说明(但是实际实施中该方法还可以应用于其他场景中的数据表的关联,并不局限于下面的例子),此外,还可以结合图2所示的原理示意图来描述该方法:例如,第一数据表可以是用户登陆信息表,参见如下的表1,示例了第一数据表的部分信息,包括了用户ID及该用户的登陆时间的对应关系,其中的用户ID可以称为关联键,数据表之间可以依据该关联键进行join。表1第一数据表用户ID登陆时间1232016.3.21··························1232016.3.242342016.3.263452016.3.27其中,在第一数据表中,用户ID“123”的数据记录达到了百万或千万条,并假设本例子中该用户ID“123”的数据属于“能够造成数据倾斜的倾斜数据”,而剩余的其他数据比如用户ID“234”和“345”的数据记录属于非倾斜数据,即不会造成数据倾斜。与第一数据表进行join的第二数据表,可以是一个用户名称的信息表,例如参见如下的表2所示,包含了用户ID和用户名称。表2第二数据表用户ID用户名称123张三234李四345王五本次第一数据表和第二数据表之间的关联,即根据用户ID这个关联键,由第一数据表和第二数据表中找到与用户ID对应的登陆时间和用户名称,生成一个类似表3所示的关联结果表,该关联结果表中包括了用户ID、以及与该用户ID对应的登陆时间和用户名称。表3关联结果表用户ID登陆时间用户名称1232016.3.21张三····································1232016.3.24张三2342016.3.26李四3452016.3.27王五下面将结合上述的例子,描述本申请的数据表关联方法的过程:在步骤101中,由第一数据表中提取倾斜数据放入第一数据分表,并将非倾斜数据放入第二数据分表。本步骤中,将第一数据表进行了拆分,可以分别称为第一数据分表和第二数据分表。其中,第一数据分表中可以包括倾斜数据,例如表1中的用户ID“123”对应的百万或千万条的数据记录,第二数据分表中可以包括非倾斜数据,例如表1中的用户ID“123”之外本文档来自技高网...
一种数据表关联方法和装置

【技术保护点】
一种数据表关联方法,其特征在于,所述方法应用于对第一数据表和第二数据表进行关联;其中,所述第一数据表中包括:能够造成数据倾斜的倾斜数据以及所述倾斜数据之外的非倾斜数据,所述方法包括:由所述第一数据表中提取所述倾斜数据放入第一数据分表,并将所述非倾斜数据放入第二数据分表;由所述第二数据表中提取匹配关联所述第一数据分表的数据,放入第三数据分表;将所述第一数据分表和第三数据分表进行mapjoin得到第一关联表,将所述第二数据分表和所述第二数据表进行join,得到第二关联表;将所述第一关联表和第二关联表进行组合,得到关联结果表,所述关联结果表为所述第一数据表和第二数据表关联的结果。

【技术特征摘要】
1.一种数据表关联方法,其特征在于,所述方法应用于对第一数据表和第二数据表进行关联;其中,所述第一数据表中包括:能够造成数据倾斜的倾斜数据以及所述倾斜数据之外的非倾斜数据,所述方法包括:由所述第一数据表中提取所述倾斜数据放入第一数据分表,并将所述非倾斜数据放入第二数据分表;由所述第二数据表中提取匹配关联所述第一数据分表的数据,放入第三数据分表;将所述第一数据分表和第三数据分表进行mapjoin得到第一关联表,将所述第二数据分表和所述第二数据表进行join,得到第二关联表;将所述第一关联表和第二关联表进行组合,得到关联结果表,所述关联结果表为所述第一数据表和第二数据表关联的结果。2.根据权利要求1所述的方法,其特征在于,所述由第一数据表中提取所述倾斜数据放入第一数据分表,并将所述非倾斜数据放入第二数据分表,包括:由所述第一数据表中提取造成数据倾斜的至少一个关联键,将所述至少一个关联键放入关联键子表中;根据所述关联键子表,将所述第一数据表中匹配关联所述关联键子表的数据放入所述第一数据分表,将不能匹配关联所述关联键子表的数据放入所述第二数据分表。3.根据权利要求2所述的方法,其特征在于,所述由所述第一数据表中提取造成数据倾斜的至少一个关联键,包括:统计所述第一数据表中的各个关联键的数量,将各个关联键按照数量由多到少的顺序进行排序;根据预先设定的关联键数量上限,获取排序位数在所述关联键数量上限之内的至少一个关联键,作为所述造成数据倾斜的至少一个关联键。4.根据权利要求2所述的方法,其特征在于,所述由所述第二数据表中提取匹配关联所述第一数据分表的数据,放入第三数据分表,包括:将所述关联键子表与所述第二数据表进行关联,将关联得到的所述第二数据表的数据放入所述第三数据分表。5.根据权利要求2所述的方法,其特征在于,所述根据所述关联键子表,将所述第一数据表中匹配关联所述关联键子表的数据放入所述第一数据分表,将不能匹配关联所述关联键子表的数据放入所述第二数据分表,包括:将所述关联键子表与所述第一数据表进行第一次mapjoin,得到匹配关联所述关联键子表的数据放入所述第一数据分表;将所述关联键子表与所述第一数据表进行第二次mapjoin,得到不能匹配关联所述关联键子表的数据放入所述第二数据分表;或者,将所述关联键子表与所述第一数据表进行一次mapjoin,分别对匹配关联所述关联键子表的数据和不能匹配关联所述关联键子表的数据进行标识;根据所述标识,将所述匹配关联所述关联键子表的数据...

【专利技术属性】
技术研发人员:康树鹏
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1