CN112182031A - 数据查询方法及装置、存储介质、电子装置 - Google Patents
数据查询方法及装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN112182031A CN112182031A CN202011086070.5A CN202011086070A CN112182031A CN 112182031 A CN112182031 A CN 112182031A CN 202011086070 A CN202011086070 A CN 202011086070A CN 112182031 A CN112182031 A CN 112182031A
- Authority
- CN
- China
- Prior art keywords
- data
- queried
- metadata information
- model
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据查询方法及装置、存储介质、电子装置,上述方法包括:获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和所述待查询数据对应的预处理方式;基于所述预处理方式对所述待查询数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询,采用上述技术方案,解决了相关技术中,在通过Hive数据仓库进行数据查询的过程中,需要大量的人为参与确定对数据的处理方式,进而使得流程复杂,处理慢,人工成本高等问题。
Description
技术领域
本发明主要涉及通信领域,具体而言,涉及一种数据查询方法及装置、存储介质、电子装置。
背景技术
在大数据时代下,大数据信息智能处理技术被广泛应用到生产环境中,通过大数据信息处理技术产生的海量数据通常会被存储在数据仓库中以用于分析处理,为决策管理人员提供有用的决策分析信息。
现有的相关技术中,为了加速Hive数据仓库的查询速度,通常采用将需要进行查询操作的结果进行预先计算和保存或将关联表中需要的数据预处理到指定数据缓存区域,再根据接口参数从所述数据缓存区域加载所述需要的数据进入内存并存储的方式。但是,现有的技术针对不同的应用场景进行性能调优时需涉及到大量的人为参与,通常需根据人为经验进行繁琐的优化操作。
针对相关技术中,在通过Hive数据仓库进行数据查询的过程中,需要大量的人为参与确定对数据的处理方式,进而使得流程复杂,人工成本高等问题,尚未提出有效的技术方案。
发明内容
本发明实施例提供了一种数据查询方法及装置、存储介质、电子装置,以至少解决相关技术在通过Hive数据仓库进行数据查询的过程中,需要大量的人为参与确定对数据的处理方式,进而使得流程复杂,人工成本高等问题。
本发明实施例提供了一种数据查询方法,包括:获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和所述待查询数据对应的预处理方式;基于所述预处理方式对所述待查询数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询。
可选地,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,包括以下至少之一:使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行查询时所采用的计算引擎框架;使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行合并汇总处理的方式;使用第一模型对所述元数据信息进行分析,确定将所述目标表保存在内存中的处理方式;使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表,并将所述常用表预先缓存在所述内存中。
可选地,确定将所述目标表保存在内存中的处理方式,包括以下至少之一:确定在所述内存中采用列式存储格式存储所述待查询数据;确定在所述内存中采用与所述待查询数据适配的压缩算法对所述目标表进行压缩;将所述待查询数据中占用空间率高于第一阈值的字段类型转化为占用空间率低于第二阈值的字段类型。
可选地,确定对所述待查询数据进行合并汇总处理的方式,包括:对所述待查询数据中的部分数据进行聚合操作,以减少所述待查询数据的数据量。
可选地,使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表之前,所述方法还包括:获取使用次数超过第三阈值的多张表;从所述多张表中确定与所述目标表匹配的常用表。
可选地,获取待查询的目标表的元数据信息,包括以下至少之一:获取所述目标表中的表结构信息;获取所述目标表的数据量信息;获取所述目标表对应的HQL语句。
可选地,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式之前,所述方法还包括:获取所述多组数据;通过所述多组数据对所述第一模型进行训练,以使所述第一模型对元数据信息进行分析后,确定待查询数据的预处理方式。
根据本发明的另一个实施例,还提供了一种数据查询装置,包括:获取模块,用于获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;确定模块,用于使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和所述待查询数据对应的预处理方式;处理模块,用于基于所述预处理方式对所述目标表的数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询。
可选地,所述确定模块用于执行以下至少之一:使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行查询时所采用的计算引擎框架;使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行合并汇总处理的方式;使用第一模型对所述元数据信息进行分析,确定将所述目标表保存在内存中的处理方式;使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表,并将所述常用表预先缓存在所述内存中。
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过上述技术方案,获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和所述待查询数据对应的预处理方式;基于所述预处理方式对所述待查询数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询,采用上述技术方案,解决了相关技术中,在通过Hive数据仓库进行数据查询的过程中,需要大量的人为参与确定对数据的处理方式,进而使得流程复杂,处理慢,人工成本高等问题等问题,进而解决因繁琐的人为调优操作以及凭人为经验所带来的查询性能影响,进一步提升Hive在分析查询时的效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种数据查询方法的计算机终端的硬件结构框图;
图2为根据本发明实施例的数据查询方法的流程图;
图3为根据本发明可选实施例的数据查询方法预处理的流程示意图;
图4是根据本发明实施例的数据查询装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例所提供的方法可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种数据查询方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据查询方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
根据本发明的一个实施例,提供了一种数据查询方法,应用于上述计算机终端,图2为根据本发明实施例的数据查询方法的流程图,如图2所示,包括:
步骤S202,获取待查询的目标表的元数据信息,其中,所述目标表中包括待查询数据;
步骤S204,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和所述待查询数据对应的预处理方式;
步骤S206,基于所述预处理方式对所述待查询数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询。
通过上述步骤,获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和所属待查询数据对应的预处理方式;基于所述预处理方式对所述待查询数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询,即引入第一模型对元数据进行分析,进而得到数据的预处理方式,根据待查询数据的预处理方式对目标表的数据进行处理,进而在Hive数据仓库中对处理后的待查询数据进行查询,采用上述技术方案,解决了相关技术中,在通过Hive数据仓库进行数据查询的过程中,需要大量的人为参与确定对数据的处理方式,进而使得流程复杂,处理慢,人工成本高等问题等问题,进而解决因繁琐的人为调优操作以及凭人为经验所带来的查询性能影响,进一步提升Hive在分析查询时的效率。
可选地,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式有多种,包括以下至少之一,在一个可选实施例中,使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行查询时所采用的计算引擎框架;使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行合并汇总处理的方式;使用第一模型对所述元数据信息进行分析,确定将所述目标表保存在内存中的处理方式;使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表,并将所述常用表预先缓存在所述内存中。
也就是说,待查询数据的预处理方式包括:待查询数据进行查询时所采用的计算引擎框架、待查询数据进行合并汇总处理的方式、目标表保存在内存中的处理方式、所述目标表匹配的常用表,并将所述常用表预先缓存在所述内存中,上述待查询数据的预处理方式由使用第一模型对所述元数据信息进行分析得到,通过上述实施例中将所述常用表预先缓存在所述内存中可以提升内存空间的利用率进而可以加速表查询效率。
需要说明的是,计算引擎框架可以采用Spark/Tez等更优的计算引擎框架,Spark是一个通用的计算引擎,拥有快速的集群计算技术,提供了更多的分布式计算场景,包括交互式查询和流处理,基于内存的集群计算,计算速度相对于其他的计算引擎框架大大提高。
需要说明的是,Tez是一个框架工具,特定位Hive提供批量计算。可以根据不同场景不同数据层次选择合适的计算引擎框架,本发明对于计算引擎框架的使用不做限定。
将所述目标表保存在内存中的处理方式有很多种,在一个示例性实施例中,可以通过以下方式至少之一:确定在所述内存中采用列式存储格式存储所述待查询数据;确定在所述内存中采用与所述待查询数据适配的压缩算法对所述目标表进行压缩;将所述待查询数据中占用空间率高于第一阈值的字段类型转化为占用空间率低于第二阈值的字段类型。
也就是说,可以在内存中采用列式存储格式存储待查询数据(例如Orc、Parquet等格式),也可以在内存中采用与所述待查询数据适配的压缩算法对目标表进行压缩(例如snappy、zlib等压缩算法),还可以将待查询数据中占用空间率高于第一阈值的字段类型转化为占用空间率低于第二阈值的字段类型(例如,将占用空间率比较多的将占用空间率比较多的bigint类型优化成占用空间率更少的int类型、smallint类型甚至tinyint类型),来完成将目标表保存在内存中,本发明将目标表保存在内存中的具体处理方式不做限定。
可选地,确定对所述待查询数据进行合并汇总处理的方式,包括:对所述待查询数据中的部分数据进行聚合操作,以减少所述待查询数据的数据量。
也就是说,为了减少待查询数据的数据量,可以对所述待查询数据中的部分数据进行聚合操作,例如,为减少查询的数据过程产生的数据量,在计算过程中将待查询数据进行归并聚合。处理大量待查询数据时,可以对部分数据进行归并汇总。在Hive中设置sethive.map.aggr=true;可以在map task处理时对数据进行聚合操作,减少数据流到reducetask处理的数据量。
可选地,使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表之前,所述方法还包括:获取使用次数超过第三阈值的多张表;从所述多张表中确定与所述目标表匹配的常用表。
也就是说,根据使用次数,获取使用次数超过第三阈值的多张表,从而在多张表中确定与所述目标表匹配的常用表,需要说明的是,确认常用表的方式还可以采用其他技术方案,本发明实施例对此不进行限定。
可选地,获取待查询的目标表的元数据信息,包括以下至少之一:获取所述目标表中的表结构信息;获取所述目标表的数据量信息;获取所述目标表对应的HQL语句。
也就是说,获取到的待查询的目标表的元数据信息至少包含目标表中的表结构信息、目标表的数据量信息和目标表对应的HQL语句中一个或多个信息。
可选地,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式之前,还要获取所述多组数据;通过所述多组数据对所述第一模型进行训练,以使所述第一模型对元数据信息进行分析后,确定待查询数据的预处理方式。
以下结合几个可选实施例对上述数据查询方法的流程进行解释说明,但不用于限定本发明实施例的技术方案。
以下对本发明可选实施例的名词进行解释,以便更好的理解本发明可选实施例的方案。
Hive:是基于hadoop的一个数据仓库工具,用来进行数据提取,转化,加载,这是一种可以存储,查询和分析存储在hadoop中的大规模数据的机制。
Apache Hive:是一种建立在Hadoop文件系统之上的数据仓库架构组件,同时也是一种基于OLAP(On Line Analysis Process,联机分析处理)型的数据仓库。其可对存储在HDFS上数据仓库中的数据进行分析和管理,将结构化的数据文件映射成数据库表,并提供完整的类SQL查询功能,然后将SQL语句转换成相应的任务(如:MapReduce任务、Spark任务等)进行运行,最终对数据仓库中的海量数据完成一系列的ETL任务(提取、加载、转换)以进行分析查询,将分析查询结果用于管理层进行决策分析。
HQL(Hive Query Language):是一种类SQL语言,常用于对Hive表和分区数据进行操作,用户在Hive客户端提交的HQL查询会被提交给Hive服务端使用编译器进行语义语法编译分析生成AST(抽象语法树),再由AST产生逻辑计划,然后通过优化器优化逻辑计划生成物理计划后再对物理计划进行优化后作为任务提交给计算引擎(MR/Spark/Tez)进行计算处理,最后任务的计算结果由Hive服务端返回给用户(Hive客户端)。然而Hive作为一种OLAP型数据仓库,使用HQL对海量数据进行分析查询时通常会存在效率比较低,查询耗时长的问题。
HQL语法通常包含DDL\DML\DQL等,而从数据分析处理的角度上,该语法本质上又可以分为三种模式,即过滤模式、聚合模式以及连接模式。
过滤模式,即对表数据进行过滤操作,通过会在HQL中使用显示关键字:where、having等。
聚合模式,即对表数据进行聚合操作,是一种可以将多行的数据缩减成一行或者少数几行的计算模式。通过聚合模式,可以在整个计算流程的前面快速过滤掉作业中传输的数据量,使得计算流程的后续操作中的数据量大为降低,适当提高了程序的运行效率。数据聚合的同时也意味着在处理数据过程中存在Shuffle的过程。涉及到的显示关键字:count、max、min、sum、avg等。
连接模式,即对表数据进行连接操作,此操作又分为两大类:有Shuffle的连接操作和无Shuffle的连接操作。
在HQL语句中含聚合模式和连接模式时往往涉及到数据处理过程中的大量Shuffle操作,通常对程序的性能会造成一定的瓶颈,以致于存在一定的优化空间。一般情况下,优化Hive查询性能的方式通常是:
1)采用更优的计算引擎框架(Spark/Tez)取代默认的MapReduce计算框架,相比于MapReduce计算引擎这种新型的DAG计算引擎采用了更优的机制可以让HQL具有更高的执行性能;(1)避免借助分布式文件系统交换数据而减少不必要的网络和磁盘IO开销;(2)将重复使用的数据缓存队列到内存中以加速读取效率;(3)复用资源直到HQL运行结束(比如在Spark中Executor一旦启用后不会释放,直到所有任务运行完成)。
2)对待查询处理的表/分区数据提前进行内存预加载和预计算,以加速查询效率。
在本发明实施例中,在对HQL进行优化时,可以采用相关缓存算法运用到HQL查询过程中,将数据缓存到内存中并结合优化Hive建表结构,避免查询过程中的频繁计算所产生的大量开销(网络传输数据会耗费大量资源)。在缓存设计方面,由于通常情况下内存资源往往是有限的,如果产生的中间结果数据集较大,有限的内存资源通常很难容纳下这部分数据从而影响Hive查询性能,比如在一些HQL中通常会涉及到多次使用同一张表的情况,可以对这种可能多次使用的表通过已有的预处理技术预先缓存到内存中,同时优先选择数据量相对较小的表,以减少内存溢出的几率。在表结构设计方面,也可以对待预加载至内存的表在创建表时进行适当的优化操作,比如可以采用行列存储格式或者列式存储格式以加速仅查询某些列时的查询效率,往往这类存储格式相较于行式存储占用的磁盘空间更小,因此可以将其结合合理的压缩算法以及对字段类型的合理设计以减少内存占用空间。
由于无论是通过缓存设计还是表结构设计进行性能优化时通常都需要繁琐的人为调参调优环节以及要求开发运维人员具备丰富的调参调优经验,混乱的调优方式或经验不足可能会对查询Hive查询性能造成负面因素,同时有时整个调优过程也会显的非常枯燥且漫长,非常影响HQL开发效率。本发明实施例提出了一种利用机器学习算法训练出调优模型对含聚合模式和关联模式的HQL语句查询优化方法,用于提升Hive聚合和关联查询效率,解决在Hive中对一些涉及到聚合和关联操作的HQL语句查询耗时长问题。
本发明可选实施例提供了一种数据查询方法预处理的流程,如图3所示的流程示意图,包括以下步骤:
步骤S302:准备大量的训练数据集(相当于上述实施例中的目标表);
输入项:包括表结构信息,数据量信息,HQL语句等元数据信息;
输出项:计算引擎,优化参数配置项,优化字段类型、存储格式,压缩格式等,可以理解为是对数据的预处理方式。
步骤S304:通过机器学习分类算法(SVM或朴素贝叶斯)对提供的训练数据集进行训练生成性能优化模型(相当于上述实施例中的第一模型);
性能优化模型的输出项包括如下:
1)选择合适的计算引擎框架;
比如:采用更优的计算引擎框架Spark/Tez代替MapReduce
2)自动调参处理:聚合操作;
比如:为减少shuffle过程产生的数据量,在计算过程中将数据进行归并聚合。处理大量数据时,可以对局部数据进行归并汇总。在hive中设置set hive.map.aggr=true;可以在map task处理时对数据进行聚合操作,减少数据流到reduce task处理的数据量。
3)进行合理的表结构设计构建(相当于上述实施例中的确定将所述目标表保存在内存中的处理方式);
(1)采用列式存储格式存储表数据,如:Orc、Parquet等;
(2)对存储格式使用合适的压缩算法,如:snappy、zlib等;
(3)进行合理的字段类型设计,如:占用空间率多的字段类型优化成占用空间率较低的字段类型,比如将占用空间率比较多的bigint类型优化成占用空间率更少的int类型、smallint类型甚至tinyint类型,复杂数据类型ARRAY,MAP,STRUCT也类似。
4)预加载常用表数据到缓存中;
在HQL转换成具体的任务执行之前采用Spark技术将常用表数据预先缓存到内存中,使用SQLcontext.cacheTable(tableName)或DataFarame.cache()。
步骤S306:任务提交,进而通过已训练生成的性能优化模型对新的查询进行预处理调优操作。
通过上述步骤,本发明实施例提出了一种利用机器学习算法训练出调优模型对含聚合模式和连接模式的HQL语句查询优化方法,用于提升Hive聚合和关联查询效率,解决了在Hive中对一些涉及到聚合和连接操作的HQL语句查询耗时长问题。通过结合多种常用调优方式可有效的减少内存空间占用率使得在查询过程中利用有限的内存资源空间加速查询效率;利用机器学习算法训练优化模型方式可大幅减小人为调优的复杂程度和经验依赖程度。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种数据查询装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图4是根据本发明实施例的数据查询装置的结构框图,如图4所示,该装置包括:
获取模块42,用于获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;
确定模块44,用于使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和待查询数据对应的预处理方式;
处理模块46,用于基于所述预处理方式对所述目标表的数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询。
通过上述装置,获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和所述待查询数据对应的预处理方式;基于所述预处理方式对所述待查询数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询,采用上述技术方案,解决了相关技术中,在通过Hive数据仓库进行数据查询的过程中,需要大量的人为参与确定对数据的处理方式,进而使得流程复杂,处理慢,人工成本高等问题等问题。
可选地,上述确定模块,还用于执行以下至少之一:使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行查询时所采用的计算引擎框架;使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行合并汇总处理的方式;使用第一模型对所述元数据信息进行分析,确定将所述目标表保存在内存中的处理方式;使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表,并将所述常用表预先缓存在所述内存中。
也就是说,待查询数据的预处理方式包括:待查询数据进行查询时所采用的计算引擎框架、待查询数据进行合并汇总处理的方式、目标表保存在内存中的处理方式、所述目标表匹配的常用表,并将所述常用表预先缓存在所述内存中。待查询数据的预处理方式由使用第一模型对所述元数据信息进行分析得到。将所述常用表预先缓存在所述内存中可以提升内存空间的利用率进而可以加速表查询效率。
需要说明的是,计算引擎框架可以采用Spark/Tez等更优的计算引擎框架,Spark是一个通用的计算引擎,拥有快速的集群计算技术,提供了更多的分布式计算场景,包括交互式查询和流处理,基于内存的集群计算,计算速度相对于其他的计算引擎框架大大提高。Tez是一个框架工具,特定位Hive提供批量计算。可以根据不同场景不同数据层次选择合适的计算引擎框架,本发明对于计算引擎框架的使用不做限定。将所述常用表预先缓存在所述内存中可以提升内存空间的利用率进而可以加速表查询效率。
可选地,上述确定模块,还用于确定将所述目标表保存在内存中的处理方式,包括以下至少之一:确定在所述内存中采用列式存储格式存储所述待查询数据;确定在所述内存中采用与所述待查询数据适配的压缩算法对所述目标表进行压缩;将所述待查询数据中占用空间率高于第一阈值的字段类型转化为占用空间率低于第二阈值的字段类型。
也就是说,可以在内存中采用列式存储格式存储待查询数据(例如Orc、Parquet等格式),也可以在内存中采用与所述待查询数据适配的压缩算法对目标表进行压缩(例如snappy、zlib等压缩算法),还可以将待查询数据中占用空间率高于第一阈值的字段类型转化为占用空间率低于第二阈值的字段类型(例如,将占用空间率比较多的将占用空间率比较多的bigint类型优化成占用空间率更少的int类型、smallint类型甚至tinyint类型),来完成将目标表保存在内存中,本发明将目标表保存在内存中的具体处理方式不做限定。
可选地,上述处理模块还用于确定对所述待查询数据进行合并汇总处理的方式,对所述待查询数据中的部分数据进行聚合操作,以减少所述待查询数据的数据量。
也就是说,为了减少待查询数据的数据量,可以对所述待查询数据中的部分数据进行聚合操作。
例如,为减少查询的数据过程产生的数据量,在计算过程中将待查询数据进行归并聚合。处理大量待查询数据时,可以对局部数据进行归并汇总。在Hive中设置sethive.map.aggr=true;可以在map task处理时对数据进行聚合操作,减少数据流到reducetask处理的数据量。
可选地,上述获取模块还用于使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表之前,获取使用次数超过第三阈值的多张表;从所述多张表中确定与所述目标表匹配的常用表。
也就是说,根据使用次数超过第三阈值的标准,获取多张表,从而在多张表中确定与所述目标表匹配的常用表。
可选地,上述获取模块还用于获取待查询的目标表的元数据信息,包括以下至少之一:获取所述目标表中的表结构信息;获取所述目标表的数据量信息;获取所述目标表对应的HQL语句。
也就是说,获取到的待查询的目标表的元数据信息至少包含目标表中的表结构信息、目标表的数据量信息和目标表对应的HQL语句中一个或多个信息。
可选地,获取模块还用于获取所述多组数据;通过所述多组数据对所述第一模型进行训练,以使所述第一模型对元数据信息进行分析后,确定待查询数据的预处理方式。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;
S2,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和待查询数据对应的预处理方式;
S3,基于所述预处理方式对所述目标表的数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;
S2,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和待查询数据对应的预处理方式;
S3,基于所述预处理方式对所述目标表的数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种数据查询方法,其特征在于,包括:
获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;
使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和所述待查询数据对应的预处理方式;
基于所述预处理方式对所述待查询数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询。
2.根据权利要求1所述的方法,其特征在于,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,包括以下至少之一:
使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行查询时所采用的计算引擎框架;
使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行合并汇总处理的方式;
使用第一模型对所述元数据信息进行分析,确定将所述目标表保存在内存中的处理方式;
使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表,并将所述常用表预先缓存在所述内存中。
3.根据权利要求2所述的方法,其特征在于,确定将所述目标表保存在内存中的处理方式,包括以下至少之一:
确定在所述内存中采用列式存储格式存储所述待查询数据;
确定在所述内存中采用与所述待查询数据适配的压缩算法对所述目标表进行压缩;
将所述待查询数据中占用空间率高于第一阈值的字段类型转化为占用空间率低于第二阈值的字段类型。
4.根据权利要求2所述的方法,其特征在于,确定对所述待查询数据进行合并汇总处理的方式,包括:
对所述待查询数据中的部分数据进行聚合操作,以减少所述待查询数据的数据量。
5.根据权利要求2所述的方法,其特征在于,使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表之前,所述方法还包括:
获取使用次数超过第三阈值的多张表;
从所述多张表中确定与所述目标表匹配的常用表。
6.根据权利要求1所述的方法,其特征在于,获取待查询的目标表的元数据信息,包括以下至少之一:
获取所述目标表中的表结构信息;
获取所述目标表的数据量信息;
获取所述目标表对应的HQL语句。
7.根据权利要求1所述的方法,其特征在于,使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式之前,所述方法还包括:
获取所述多组数据;
通过所述多组数据对所述第一模型进行训练,以使所述第一模型对元数据信息进行分析后,确定待查询数据的预处理方式。
8.一种数据查询装置,其特征在于,包括:
获取模块,用于获取待查询的目标表的元数据信息,其中,所述目标表包括待查询数据;
确定模块,用于使用第一模型对所述元数据信息进行分析,确定所述待查询数据的预处理方式,其中,所述第一模型为使用多组数据训练得到的,所述多组数据中的每组数据均包括:元数据信息和待查询数据对应的预处理方式;
处理模块,用于基于所述预处理方式对所述目标表的数据进行处理,以在Hive数据仓库中对处理后的所述待查询数据进行查询。
9.根据权利要求8所述的装置,其特征在于,所述确定模块用于执行以下至少之一:
使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行查询时所采用的计算引擎框架;
使用第一模型对所述元数据信息进行分析,确定对所述待查询数据进行合并汇总处理的方式;
使用第一模型对所述元数据信息进行分析,确定将所述目标表保存在内存中的处理方式;
使用第一模型对所述元数据信息进行分析,确定与所述目标表匹配的常用表,并将所述常用表预先缓存在所述内存中。
10.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至7任一项中所述的方法。
11.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011086070.5A CN112182031B (zh) | 2020-10-12 | 2020-10-12 | 数据查询方法及装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011086070.5A CN112182031B (zh) | 2020-10-12 | 2020-10-12 | 数据查询方法及装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112182031A true CN112182031A (zh) | 2021-01-05 |
CN112182031B CN112182031B (zh) | 2023-06-13 |
Family
ID=73949446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011086070.5A Active CN112182031B (zh) | 2020-10-12 | 2020-10-12 | 数据查询方法及装置、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112182031B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112561499A (zh) * | 2021-02-01 | 2021-03-26 | 开封大学 | 一种基于低碳经济的新能源数据管理系统 |
CN113590651A (zh) * | 2021-08-18 | 2021-11-02 | 四川新网银行股份有限公司 | 一种基于hql的跨集群数据处理系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425762A (zh) * | 2013-08-05 | 2013-12-04 | 南京邮电大学 | 基于Hadoop平台的电信运营商海量数据处理方法 |
CN107169070A (zh) * | 2017-05-08 | 2017-09-15 | 山大地纬软件股份有限公司 | 一种基于大数据的社保指标仓库的构建系统及其方法 |
CN109471893A (zh) * | 2018-10-24 | 2019-03-15 | 上海连尚网络科技有限公司 | 网络数据的查询方法、设备及计算机可读存储介质 |
CN110825729A (zh) * | 2018-08-14 | 2020-02-21 | 珠海格力电器股份有限公司 | 数据查询方法及装置、存储介质、电子装置 |
CN111311326A (zh) * | 2020-02-18 | 2020-06-19 | 平安科技(深圳)有限公司 | 用户行为实时多维度分析方法、装置及存储介质 |
-
2020
- 2020-10-12 CN CN202011086070.5A patent/CN112182031B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425762A (zh) * | 2013-08-05 | 2013-12-04 | 南京邮电大学 | 基于Hadoop平台的电信运营商海量数据处理方法 |
CN107169070A (zh) * | 2017-05-08 | 2017-09-15 | 山大地纬软件股份有限公司 | 一种基于大数据的社保指标仓库的构建系统及其方法 |
CN110825729A (zh) * | 2018-08-14 | 2020-02-21 | 珠海格力电器股份有限公司 | 数据查询方法及装置、存储介质、电子装置 |
CN109471893A (zh) * | 2018-10-24 | 2019-03-15 | 上海连尚网络科技有限公司 | 网络数据的查询方法、设备及计算机可读存储介质 |
CN111311326A (zh) * | 2020-02-18 | 2020-06-19 | 平安科技(深圳)有限公司 | 用户行为实时多维度分析方法、装置及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112561499A (zh) * | 2021-02-01 | 2021-03-26 | 开封大学 | 一种基于低碳经济的新能源数据管理系统 |
CN113590651A (zh) * | 2021-08-18 | 2021-11-02 | 四川新网银行股份有限公司 | 一种基于hql的跨集群数据处理系统及方法 |
CN113590651B (zh) * | 2021-08-18 | 2023-06-20 | 四川新网银行股份有限公司 | 一种基于hql的跨集群数据处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112182031B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239335B (zh) | 分布式系统的作业调度系统及方法 | |
CN101021874B (zh) | 一种对查询sql请求进行优化的方法及装置 | |
US11003649B2 (en) | Index establishment method and device | |
CN107291770B (zh) | 一种分布式系统中海量数据的查询方法及装置 | |
CN106599052B (zh) | 一种基于Apache Kylin的数据查询系统及其方法 | |
US10146806B2 (en) | Adaptive resolution hsitogram | |
CN112182031B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN113360554A (zh) | 一种数据抽取、转换和加载etl的方法和设备 | |
CN110727690A (zh) | 一种数据更新方法 | |
CN108073641B (zh) | 查询数据表的方法和装置 | |
CN111046059B (zh) | 基于分布式数据库集群的低效sql语句分析方法及系统 | |
CN103345527A (zh) | 数据智能统计系统 | |
CN112631754A (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN117407505A (zh) | 一种融合文档知识和问答对数据的问答检索方法及系统 | |
CN114756629B (zh) | 基于sql的多源异构数据交互分析引擎及方法 | |
Gupta et al. | An approach for optimizing the performance for apache spark applications | |
CN110825792A (zh) | 基于golang中间件协程模式下的高并发分布式数据检索方法 | |
CN115982230A (zh) | 数据库的跨数据源查询方法、系统、设备及存储介质 | |
CN105630997A (zh) | 一种数据并行处理方法、装置及设备 | |
CN115481097A (zh) | 实现海量流量下实时数据报表的方法、装置和计算机设备 | |
CN109992630B (zh) | 数据模型匹配方法和装置 | |
CN113177089A (zh) | 一种分布式数据存储引擎调度方法 | |
CN114817315B (zh) | 数据处理方法以及系统 | |
CN113641654B (zh) | 一种基于实时事件的营销处置规则引擎方法 | |
CN113190577B (zh) | 一种表连接查询方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |