【技术实现步骤摘要】
数据处理方法及装置
本公开涉及大数据
,具体而言,涉及一种数据处理方法及装置。
技术介绍
Spark是一种基于内存的分布式计算框架,其中包括能够处理SQL(StructuredQueryLanguage,结构化查询语言)语句的SparkSQL组件。在使用SparkSQL组件进行数据分析时,一个查询语句往往涉及到多个数据表的数据关联,从而需要在查询过程中对数据表进行连接(join),也即,将两个数据表中的每一行数据进行任意组合,形成临时的笛卡尔积表。相关技术中,在对两个数据表进行连接时,通常先将满足连接条件的数据拉取(shuffle)到同一分区中,再对数据进行连接。在连接完成后,该分区中的数量会倍增,导致该分区中的计算速度缓慢。
技术实现思路
有鉴于此,本公开的目的在于提供一种数据处理方法及装置,以提高Spark进行数据处理的速度。为了达到上述目的,本公开采用如下技术方案:第一方面,本公开提供一种数据处理方法,应用于Spark中的查询优化器,所述方法包括:获得SQL语句的原始逻辑计划树,所述原始逻辑计划树包括聚合节点、连接节点和表扫描节点,其中,所述连接节点为所述聚合节点的子节点;在所述连接节点连接的两个数据表中确定被所述聚合节点的聚合函数操作的数据表,从所确定的数据表中选取至少一个数据表作为第一数据表;创建与所述第一数据表对应的第一预聚合节点;将所述第一预聚合节点插入所述连接节点和与所述第一数据表对应的表扫描节点之间,得到优化的逻辑计划树。第二方面,本公开提供一种数据处理装置,应用于Spark中的查询优化器,所述装置包括:获得模块,用于获得SQL语句的原 ...
【技术保护点】
1.一种数据处理方法,其特征在于,应用于Spark中的查询优化器,所述方法包括:获得SQL语句的原始逻辑计划树,所述原始逻辑计划树包括聚合节点、连接节点和表扫描节点,其中,所述连接节点为所述聚合节点的子节点;在所述连接节点连接的两个数据表中确定被所述聚合节点的聚合函数操作的数据表,从所确定的数据表中选取至少一个数据表作为第一数据表;创建与所述第一数据表对应的第一预聚合节点;将所述第一预聚合节点插入所述连接节点和与所述第一数据表对应的表扫描节点之间,得到优化的逻辑计划树。
【技术特征摘要】
1.一种数据处理方法,其特征在于,应用于Spark中的查询优化器,所述方法包括:获得SQL语句的原始逻辑计划树,所述原始逻辑计划树包括聚合节点、连接节点和表扫描节点,其中,所述连接节点为所述聚合节点的子节点;在所述连接节点连接的两个数据表中确定被所述聚合节点的聚合函数操作的数据表,从所确定的数据表中选取至少一个数据表作为第一数据表;创建与所述第一数据表对应的第一预聚合节点;将所述第一预聚合节点插入所述连接节点和与所述第一数据表对应的表扫描节点之间,得到优化的逻辑计划树。2.根据权利要求1所述的数据处理方法,其特征在于,所述第一预聚合节点包括分组条件;创建与所述第一数据表对应的第一预聚合节点,包括:若所述第一数据表没有被所述聚合节点中的分组函数操作,则从所述连接节点的连接条件中获取所述第一数据表的字段作为第一字段,将该第一字段设置为所述第一预聚合节点的分组条件;若所述第一数据表被所述聚合节点中的分组函数操作,则获取所述分组函数对所述第一数据表的操作字段作为第二字段,从所述连接条件中获取所述第一数据表的字段作为第一字段,将该第一字段和该第二字段均设置为所述第一预聚合节点的分组条件。3.根据权利要求2所述的数据处理方法,其特征在于,所述第一预聚合节点还包括预聚合函数;创建与所述第一数据表对应的第一预聚合节点,还包括:当所述连接节点连接的两个数据表中、不同于所述第一数据表的第二数据表被所述聚合节点中的聚合函数操作、且操作所述第二数据表的聚合函数为sum函数时,将count函数和操作所述第一数据表的聚合函数均设置为所述第一预聚合节点的预聚合函数,其中,所述count函数操作的字段为所述连接条件中包括的所述第一数据表的字段;所述方法还包括:将所述聚合节点中操作所述第二数据表的聚合函数更新为对所述第一预聚合节点的count函数的预聚合结果和操作所述第二数据表的聚合函数的聚合结果进行聚合。4.根据权利要求2所述的数据处理方法,其特征在于,创建与所述第一数据表对应的第一预聚合节点,还包括:当所述连接节点连接的两个数据表中、不同于所述第一数据表的第二数据表没有被所述聚合节点中的聚合函数操作时,或当操作所述第二数据表的聚合函数不是sum函数时,将操作所述第一数据表的聚合函数设置为所述第一预聚合节点的预聚合函数。5.根据权利要求1-4中任一项所述的数据处理方法,其特征在于,所述方法还包括:当所述连接节点连接的两个数据表中、不同于所述第一数据表的第二数据表没有被所述聚合节点中的聚合函数操作、且操作所述第一数据表的聚合函数为sum函数时,为所述第二数据表创建第二预聚合节点;将所述第二预聚合节点插入所述连接节点和与所述第二数据表对应的表扫描节点之间。6.根据权利要求5所述的数据处理方法,其特征在于,为所述第二数据表创建第二预聚合节点,包括:从所述连接条件中获取所述第二数据表的字段作为第三字段,获取所述聚合节点中的分组函数对所述第二数据表的操作字段作为第四字段,并将所述第三字段和所述第四字段均设置为所述第二预聚合节点的分组条件,将count函数设置为所述第二预聚合节点的预聚合函数,其中,所述count函数操作的字段为所述连接条件中包括的所述第二数据表的字段;所述方法还包括:将所述聚合节点中的操作所述第一数据表的聚合函数更新为对所述第一预聚合节点的聚合函数的预聚合结果和所述第二预聚合节点的count函数的预聚合结果进行聚合。7.一种数据处理装置,其特征在于,应用于Spark中的查询优化器,所述装置包括...
【专利技术属性】
技术研发人员:任中涛,户蕾蕾,史宁宁,
申请(专利权)人:新华三大数据技术有限公司,
类型:发明
国别省市:河南,41
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。