数据查询方法、装置、设备及存储介质制造方法及图纸

技术编号:21628207 阅读:31 留言:0更新日期:2019-07-17 10:51
本发明专利技术实施例提供一种数据查询方法、装置、设备及存储介质。该方法包括:接收SQL查询请求信息;解析所述SQL查询请求信息,获取所述SQL查询请求信息对应的待操作的数据表数量、所有数据表的文件大小及当前集群可用内存大小;依据所述数据表数量、所有数据表的文件大小及当前集群可用内存大小,生成执行路径计划;根据所述执行路径计划调用一个或多个执行引擎进行查询,输出对应所述SQL查询请求信息的查询结果。通过本发明专利技术实施例的技术方案,针对海量数据进行查询时,能够提升查询性能。

Data query methods, devices, devices and storage media

【技术实现步骤摘要】
数据查询方法、装置、设备及存储介质
本专利技术涉及数据库
,尤其涉及一种数据查询方法、装置、设备及存储介质。
技术介绍
海量数据现在已经进入全球经济的各个部门。就像其他的生产必备要素(例如,硬资产和人力资本)一样,许多现代经济活动离开了它也根本不能发生。为了更有效利用这些数据,提升企业的竞争力,必须有相应的手段来快速、准确、高效地对海量的数据进行分析,挖掘数据中存在的潜在价值,并将其转化成决策,而作为大数据分析的产品hadoop应运而生。Hadoop作为一个分布式产品,通过大量廉价的硬件设备组成的集群上运行应用程序,全面地将计算推向数据。Hive作为一个基于Hadoop的数据仓库平台,它可以将结构化的数据文件映射成一张数据表,通过它,我们可以方便地进行ETL的工作。Hive定义了一个类似于SQL的查询语言:HQL,能够将用户编写的QL转化为相应的Mapreduce程序基于Hadoop执行,而不需要另外开发专门mapreduce应用,对于数据分析人员来说,基于关系型数据库的SQL的编写已经作为一个基本要求,HIVE的出现将Hadoop上的开发降低了很多门槛。也出现了基于内存迭代的分布式计算框架,如SparkSQL。它要求能够快速的返回用户的查询需求,他最大特点也是最大卖点就是它的快速,他和Hive一样都是基于hdfs文件系统,都支持类SQL语句。现有Hive和SparkSQL在处理海量数据分析的时候有如下缺陷:HIVE是通过将SQL语句自动转化成mapreduce任务,然后通过mapreduce计算框架进行数据分析处理,为此Hive的性能完全受限于mapreduce本身的性能,而mapreduce框架设计的初衷就是为了面对海量离线数据存储,通过分布式运算来提高处理性能,因而mapreduce底层更多考虑的是如何提升处理的数据量以及增加处理的节点数,而出于对性能方面的考虑会稍后于前面2者。mapreduce处理分成map和reduce2个阶段,在处理一个查询操作时,mapreduce会先对输入数据文件进行切分(split),将整个查询分成一连串的map任务(task),每个maptask根据业务需求获取有效数据,即数据筛选,这些task分布在不同的节点上运行,并将这些中间数据结果以key-value的方式进行存储到执行该maptask的节点的本地磁盘上,然后在根据key将各节点上的中间数据进行洗牌(shuffle),再聚集到各个计算节点上进行最终的reduce处理,输出数据文件。在这个过程中,中间数据结果保存在磁盘上,然后又从数据磁盘中读取,通过网络在整个集群中进行数据传输,都会大大影响整个查询的性能,而mapreduce框架追求的是更大规模的集群以及更大量的数据集,这也加剧这部分性能的损耗。当处理的数据集相对海量数据较小时,再调用如此臃肿的框架进行计算,对查询的性能来说影响非常大,可能查询只需要几秒钟,而框架调度上却需要消耗几倍甚至几十倍的时间,对数据分析来说这点让人难以忍受,虽然Hive针对这种情况提出的简单查询(fetch)的方法,但这种方法的一方面适用性有限,另一方面需要人工的过度干预,效果并不是很理想。SparkSQL是基于内存迭代的数据查询工具,SparkSQL没有再使用缓慢的Map+Reduce批处理,而是提供Cache机制来支持需要反复迭代的计算或者多次数据共享,减少数据读取的IO开销,从而大大降低了延迟。在处理一个查询时,SparkSQL先通过语法解析器解析sql语句,翻译成一棵完整的执行计划树,调度器把执行计划分发给具有相应数据的其它spark节点执行,并将查询结果通过流的方式进行汇总,最终返回给发起查询的客户端上。和Hive相比,在这个过程中,不会产生中间数据,也不会将中间结果进行shuffle操作,各节点的调度上也不会出现复杂的情况,因此和Hive相比大大提升了查询性能。但由于SparkSQL查询的结果并不写入磁盘,而是保存在内存中,通过流进行传输,为此受限于服务器硬件内存限制,只能处理有限的数据量集合,当数据量超过物理内存大小时,性能比逐渐降低,超过一定值后Hive性能反而更高。
技术实现思路
本专利技术实施例提供了一种数据查询方法、装置、设备及存储介质,用以解决现有技术中面对海量数据时,查询性能低下的技术问题。第一方面,本专利技术实施例提供了一种数据查询方法,所述方法包括:接收SQL查询请求信息;解析所述SQL查询请求信息,获取所述SQL查询请求信息对应的待操作的数据表数量、所有数据表的文件大小及当前集群可用内存大小;依据所述数据表数量、所有数据表的文件大小及当前集群可用内存大小,生成执行路径计划;根据所述执行路径计划调用一个或多个执行引擎进行查询,输出对应所述SQL查询请求信息的查询结果。第二方面,本专利技术实施例提供了一种数据查询装置,所述装置包括:接收模块,用于接收SQL查询请求信息;解析模块,用于解析所述SQL查询请求信息,获取所述SQL查询请求信息对应的待操作的数据表数量、所有数据表的文件大小及当前集群可用内存大小;执行路径计划生成模块,用于依据所述数据表数量、所有数据表的文件大小及当前集群可用内存大小,生成执行路径计划;查询模块,用于根据所述执行路径计划调用一个或多个执行引擎进行查询,输出对应所述SQL查询请求信息的查询结果。第三方面,本专利技术实施例提供了一种数据查询设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。第四方面,本专利技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。本专利技术实施例提供的数据查询方法、装置、设备及存储介质,首先结合了数据表的文件大小、数据表的统计信息、操作系统内存、集群的节点数、执行计划等信息,通过生成执行路径计划,对分析查询语句的执行路径进行优化,得到最优查询效率。其次,以针对海量数据,以提高查询性能为目标,以分布式存储与Hive、SparkSQL等分析工具为基础;结合Hive与SparkSQL的优点,进行查询优化。分析用户查询语句,过程中依据获取的所述数据表数量、所有数据表的文件大小及当前集群可用内存大小,优化语句的执行路径,旨在根据语句(子语句)与实际资源的情况选择不同的工具高效执行,进一步提高海量数据分析的能力。再次,本专利技术实施例利用大数据分布存储,以及Hive和SparkSQL这2种大数据分析工具,将两者有机结合,充分发挥两者优势,弥补了Hive在处理小数据和SparkSQL在处理大量数据上的性能不足。通过Hive将海量数据进行提取,在分布式文件系统上生成新的数据文件,再使用SparkSQL对小量数据进行业务查询,充分发挥Hive和SparkSQL在各自领域内的优势。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对本专利技术实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出了在本专利技术实施例的数据查询方法中,结合Hive与SparkSQL的通用查询装置的功能图。图2示出了本发本文档来自技高网
...

【技术保护点】
1.一种数据查询方法,其特征在于,所述方法包括:接收SQL查询请求信息;解析所述SQL查询请求信息,获取所述SQL查询请求信息对应的待操作的数据表数量、所有数据表的文件大小及当前集群可用内存大小;依据所述数据表数量、所有数据表的文件大小及当前集群可用内存大小,生成执行路径计划;根据所述执行路径计划调用一个或多个执行引擎进行查询,输出对应所述SQL查询请求信息的查询结果。

【技术特征摘要】
1.一种数据查询方法,其特征在于,所述方法包括:接收SQL查询请求信息;解析所述SQL查询请求信息,获取所述SQL查询请求信息对应的待操作的数据表数量、所有数据表的文件大小及当前集群可用内存大小;依据所述数据表数量、所有数据表的文件大小及当前集群可用内存大小,生成执行路径计划;根据所述执行路径计划调用一个或多个执行引擎进行查询,输出对应所述SQL查询请求信息的查询结果。2.根据权利要求1所述的数据查询方法,其特征在于,所述依据所述数据表数量、所有数据表的文件大小及当前集群可用内存大小,生成执行路径计划包括:当所述数据表数量为1时,将所述数据表的文件大小与当前集群的可用内存大小的第一预设阈值相比较;若所述数据表的文件大小小于所述可用内存大小的第一预设阈值时,则采用SparkSQL执行引擎查询对应所述SQL查询请求信息的数据;若所述数据表的文件大小大于等于所述第一预设阈值且存在查询条件时,则采用Hive执行引擎查询对应所述SQL查询请求信息的数据。3.根据权利要求2所述的数据查询方法,其特征在于,所述若所述数据表的文件大小大于等于所述第一预设阈值且存在查询条件时,则采用Hive执行引擎查询对应所述查询请求信息的数据包括:依据所述数据表的字段名以及所述查询条件过滤与所述SQL查询请求信息不相关的数据,获取与所述SQL查询请求信息相关的有效数据,提取所述有效数据生成临时数据表;进一步判断所述临时数据表的文件大小是否仍然大于等于所述第一预设阈值,若所述临时数据表的文件大小仍然大于等于所述第一预设阈值,则按照字段名和所述子查询条件继续过滤与所述SQL查询请求信息不相关的数据,在过滤掉与所述SQL查询请求信息不相关的数据后,采用Hive执行引擎查询对应所述查询请求信息的数据。4.根据权利要求1所述的数据查询方法,其特征在于,所述依据所述数据表数量、所有数据表的文件大小及当前集群可用内存大小,生成执行路径计划包括:当所述数据表数量为N,N为整数且N≥2时,比较N个所述数据表汇总后的文件大小与当前集群可用内存空间大小的第二预设阈值;若N个所述数据表汇总后的文件大小小于所述第二预设阈值,则采用SparkSQL执行引擎查询对应所述SQL查询请求信息的数据;若N个所述数据表汇总后的文件大小大于等于所述第二预设阈值且存在查询条件,则依据所述查询条件过滤其中1个数据表内与所述SQL查询请求信息不相关的数据并生成相应的第一临时数据表;若用所述第一临时数据表替代相应的过滤前的所述数据表并与所述N个数据表中的其余N-1个未过滤的数据表汇总得到临时数据表汇总文件,判断所述临时数据表汇总文件大小是否大于等于所述第二预...

【专利技术属性】
技术研发人员:王保强
申请(专利权)人:中国移动通信集团海南有限公司中国移动通信集团公司
类型:发明
国别省市:海南,46

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

1